在二维数组里 地址a[i]和地址*(a+i)的问题

a[i]和*(a+i)表示的是同一个地址,书上说a[i]是行地址,那么*(a+i)这种形式只单单是a[i]的一种变形吗而已?也就是说a[i]是c语言本身规定的行地址的表示... a[i]和*(a+i) 表示的是同一个地址,书上说a[i]是行地址,那么*(a+i)这种形式只单单是a[i]的一种变形吗而已?也就是说a[i]是c语言本身规定的行地址的表示方法,而a[i]又可以拆成*(a+i),所以*(a+i)是由a[i]来的,还有
a[i]和&a[i]他们两个的地址也是一样的,那么是不是&a[i]是一种无所谓的东西,还是说取一个地址的地址就是该地址本身呢??
展开
 我来答
徐青峰458
2007-09-21
知道答主
回答量:81
采纳率:0%
帮助的人:0
展开全部
a[i]和*(a+i) 表示的是同一个地址,对于数组来说,计算机计算地址都是以*(a+i)进行计算,也就是换算成指针的形式.
对于二维数组,你要搞清楚所取的地址是对谁而言的.很显然,a[i]是第i行的地址,这是相对于行而言的,也就是说,a[i+1]就是下一行的地址了.
&a[i]是不一样的,首先,a[i]是一个常量,不同的只是它只是一个地址,而&a[i]只是取这个常量的地址的物理地址,也就是物理内存中的真实地址.你可以用输出函数输出一下看看.
二维数组里,a[i]是一个数组的首地址."&"是求地址的,&a[i]。。求一个地址的地址,还是地址。。一样的东西。
a[i] 是地址,(a+i) 是个常量了,我们把他声明成指针让他来指向它不就可以拉 *(a+i) .
一超独大
2007-09-21 · TA获得超过819个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:281万
展开全部
a[i]和*(a+i) 表示的是同一个地址,对于数组来说,计算机计算地址都是以*(a+i)进行计算,也就是换算成指针的形式.
对于二维数组,你要搞清楚所取的地址是对谁而言的.很显然,a[i]是第i行的地址,这是相对于行而言的,也就是说,a[i+1]就是下一行的地址了.
&a[i]是不一样的,首先,a[i]是一个常量,不同的只是它只是一个地址,而&a[i]只是取这个常量的地址的物理地址,也就是物理内存中的真实地址.你可以用输出函数输出一下看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
176708056
2007-09-21 · 超过13用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:42.2万
展开全部
二维数组里,a[i]是一个数组的首地址."&"是求地址的,&a[i]。。求一个地址的地址,还是地址。。一样的东西。
a[i] 是地址,(a+i) 是个常量了,我们把他声明成指针让他来指向它不就可以拉 *(a+i) .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6eed2f8
2007-09-21 · TA获得超过5083个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:4046万
展开全部
a[i]是行地址,这句话比较合适,因为对于你的 问题来说只是一维数组,而对于多维数组来说,就更准确,c语言里数组是按行存储的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sangwf
2007-09-21 · TA获得超过311个赞
知道小有建树答主
回答量:427
采纳率:0%
帮助的人:341万
展开全部
你可以理解为[]是一个重载的操作符,它的实现其实就是去了*(a+i)。

你要理解地址是一个什么东西,a[i]表示一个地址,就是说a[i]本身可以当作一个变量,它里面存了一个整数,这个整数呢,就是内存里的一个地址。那么&a[i]就是表示这个变量的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式