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 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.