初学C语言指针引用数组元素,很简单的原理没搞清,谢谢回答。

书里面讲数组,假设数组为int类型,其数组名为a,从这个数组元素到下一个元素,如a[0]到a[1],可以用(a+1)表示,这里1表示一个整形,即4个字节,所以a[1]的地... 书里面讲数组,假设数组为int类型,其数组名为a,从这个数组元素到下一个元素,如a[0]到a[1],可以用(a+1)表示,这里1表示一个整形,即4个字节,所以a[1]的地址相对于a[0]的地址要加4(比如a[0]地址为0012ff40,a[1]地址为0012ff44,地址用十六进制表示的),我想问难道一个字节就等于一个十六进制吗,4个字节就是十六进制加4?而不是4个字节等于32个bit,就是32位二进制位,就是xxxxx位十六进制? 展开
 我来答
瑞杉宋5
2016-12-12 · TA获得超过461个赞
知道小有建树答主
回答量:132
采纳率:100%
帮助的人:111万
展开全部
首先:

4个字节 = 32 bit = 32 位二进制位, 你说的很对。

还有, 在开始解释这个问题前, 我想先做几个规定, 方便解释:

我规定:

a 是数组的首地址, a = 0x00 , a 的地址是 0

那么, 我要开始解释你的问题了。

a + 1 中的 1 并不是 4 个字节的意思, 按道理 a + 1 应该等于 0x01 , 因为 a 的是数组的首地址, 它的值是 0. 但是编译器知道 a 是int类型的数组的首地址, 所以他会自作主张的做出如下的转换: (a+1) -> (a+1*4) , 其中的 4 就是 int 类型的大小, 如果 int 类型是 8 个字节的话, 这个转换就是 (a+1) -> (a + 1*8).

解释完了, 如果还有疑问, 欢迎追问
stomachcao
2016-12-12 · TA获得超过6263个赞
知道大有可为答主
回答量:2276
采纳率:75%
帮助的人:735万
展开全部
4个字节等于32个bit 是对的

这里的地址 +4
不是你理解的16进制地址+4
因为 a[0]到a[1]

a+1 就是+32个bit
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不辞而别454
2016-12-12 · 超过23用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:25.5万
展开全部
考虑的有点多,a是首地址 a[0]就是第一个元素了,a+1就是a[1]了。确实如果数组的类型是int,那么这里的a+1并不是加的1而是4。不过这都是底层的东西,编译器已经帮你解决这个问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式