C语言中,Int 占4字节,是指int变量的地址在内存中占4字节也就是32个二进制位,还是指int

C语言中,Int 占4字节,是指int变量的地址在内存中占4字节也就是32个二进制位,还是指int变量本身在内存中占4字节啊?打个比方,自建函数int len(double a[]){printf("%d %d,sizeof(a),sizeof(a[0])");},在主函数中调用时输出分别是4和8,解释是数组作为参数传递首地址,既然是传递首地址,sizeof(a)调用时不应该是8吗?

int占4字节,例如int a;变量a用来存放整型数据,不管a的值是多少,都会为其分配4个字节的存储空间来存放数据。
你的例子中,sizeof(a),是求出a的存储空间的个数,a是数组名,代表的是个地址,而存储地址,通常与类型无关,也就是不管a是什么类型数组的数组名,因为地址都是整型值,所以这个应该是和计算机有关的,通常对地址的存储都是4个字节,
而sizeof(a[0])是求出数组元素的存储空间的个数,数组a是double型的,每个元素都是double型的,那存放每个元素都给分8个字节的空间。追问

如果这样的话,那么请问下面一段代码……int arr[5]=0;printf("arr是%p,arr+1是%p,(&arr)+1是%p\n",arr,arr+1,(&arr)+1);这段代码运行后,arr+1的地址比arr大4,(&arr)+1的地址比arr多20……书上解释是:因为数组arr是int型占4字节,所以arr+1的地址比arr的地址大4……请问书上的意思不就是int类型的变量地址占4字节吗

追答

%p应该是输出地址值吧,arr是arr[0]的地址,假设是2210,这是个起始地址,数组是整型的,每个元素都会有连续的4个字节的空间来存放数据,也就是2210,2211,2212,2213,这四个字节的空间用来存放arr[0],arr+1是arr[1]的地址,那就是2214.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-19
C语言中,Int 占4字节,是指int变量本身在内存中占4字节。

地址,是用于标识某个存储区域的符号。

与它对应于的这个存储区域的大小,没有必然的联系本回答被提问者采纳