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

C语言中,Int占4字节,是指int变量的地址在内存中占4字节也就是32个二进制位,还是指int变量本身在内存中占4字节啊?打个比方,自建函数intlen(doublea... 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吗? 展开
 我来答
看灰过来了
2015-01-19 · TA获得超过879个赞
知道小有建树答主
回答量:508
采纳率:83%
帮助的人:298万
展开全部
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.
ylcqucc
2015-01-19 · TA获得超过1436个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:339万
展开全部
C语言中,Int 占4字节,是指int变量本身在内存中占4字节。

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

与它对应于的这个存储区域的大小,没有必然的联系
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式