一个整型变量占4个字节,为啥我这个是8个?
本帖最后由 小艳子 于 2021-7-6 11:17 编辑#include<stdio.h>
void get_array(int b);
void get_array(int b){
int i;
for(i = 0; i < 10; i++){
printf("b[%d] =%d\n", i, b);
}
printf("sizeof b: %d\n", sizeof(b));
}
int main(){
int a ={1,2,3,4,5,6,7,8,9,0};
printf("sizeof a: %d\n", sizeof(a));
get_array(a); \\理论上来说这一步得到的是第一个元素的地址,占4个字符才对,我的运行结果是8个字符。
return 0;
}
C:\Users\Administrator\Desktop\1.png 在C语言中int类型变量的长度不是固定的,与系统位数和编译器有关。但是在32位或64位系统下都是4字节
但是你的这个程序不涉及int的长度问题,是你自己理解不对。
printf("sizeof b: %d\n", sizeof(b));
得到的不是数组的长度,是指针的长度。指针的长度是固定的,64位编译器下是8字节,32位编译器下是4字节,这是系统的寻址长度。 哪个和你说int是四个字节 上课老师就是这么讲的啊,我在网上搜了一下一个int 类型的字符就是4个字节啊。
sunrise085 发表于 2021-7-6 11:25
在C语言中int类型变量的长度不是固定的,与系统位数和编译器有关。但是在32位或64位系统下都是4字节
但是 ...
感谢大佬! 小艳子 发表于 2021-7-6 11:29
上课老师就是这么讲的啊,我在网上搜了一下一个int 类型的字符就是4个字节啊。
int 类型不是4个字节,标准没有规定int是4个字节
在32位环境下,绝大部分都是4个字节(至少我还没有见过32位环境下不是4个字节的)
注意前提条件,是32位环境下才是4个字节
人造人 发表于 2021-7-6 12:05
int 类型不是4个字节,标准没有规定int是4个字节
在32位环境下,绝大部分都是4个字节(至少我还没有见过 ...
非常感谢解答
页:
[1]