永发信息网

c语言中一维数组a[i]的地址到底是a+i还是a+i*sizeof(int)?

答案:3  悬赏:60  手机版
解决时间 2021-12-03 17:37
c语言中一维数组a[i]的地址到底是a+i还是a+i*sizeof(int)?
最佳答案
如果a[]是int型数组,设a的地址是0,由于int是4字节,那么a+2就是地址8;编译器把a+2自动理解为a+2*sizeof(int),如果写成a+2*sizeof(int),那么上例中的地址就是32(因为a+2*sizeof(int)=a+8,编译器理解为a+8*4)而不是8了。所以a+2和a+2*sizeof(int)绝不是同一地址。也可以这样说,写a+2,编译器认为是a+2*sizeof(int);而如果写a+2*sizeof(int),则编译器认为是a+2*sizeof(int)*sizeof(int)!
全部回答
a+i*sizeof(int)
i 表示移动i个单位。。。单位大小取决于指针类型

试试不就知道了?编译器会根据元素类型来决定步长.

#include
int main (void)
{
 int a[3];
printf("%p == %p",&a[2],a+2);
}

我的结果是一样的.

追问那a+2和
a+2*sizeof(int)代表的是同一个地址吗追答不是.除非这样(char*)a+2*sizeof(int)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦见自己进了坟地走不出去,最后走出来了发现
试推导1+4+9+16+……n×n=______
三年级作文想和同学说的话三百字
需要考几门能拿到基金从业资格证
如果跟人相处找不到快乐和温暖,从哪些事中可
耶稣的父亲是干什么的
佛说解悔神咒怎么念
so far做什么语时,其后的句子用现在完成时
――孟想成名字得多少分
中国邮政(安砂镇邮电局)怎么去啊,有知道地址
用简便计算23x44+46x23
哪里可以买到天然水晶
Zigbee无线通信跟基于nRF24l01模块的无线通信
茶籽榨油,这或许是世界上最营养的油,但是却
我现在17 你们说1年内可以吧初中高中的知识补
推荐资讯
梵瑜伽地址在哪,我要去那里办事,
如何绘制一条直线(-56,22.4),(56,22.4)
鬼节看到蜘蛛在风水上怎么说
自考4月份考试什么时候报名
炅这个字怎么读
下列句子中没有语病的一项是(2分)A. 近几年,
装修时水电准备工作有哪些
小说看得多的求推荐四个字的名字霸气诗意谁给
家里的无线网满信号却很卡,几乎不能用,是什
学校住宿应该要怎么做?
吉林市公安局昌邑分局东市商贸开发区东市派出
“处置固定资产、无形资产和其他长期资产收回
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?