C语言菜鸟求教:请问下面这段解释中“*(a+1)表示的是数组a[1]中第一个元素的地址”是不是错的

我觉得*(a+1)应该是数组元素呀??C语言没有多维数组,只有多个一维数组的嵌套。举个例子给你讲吧a[3][3]={1,2,34,5,67,8,9}其实是3个一维数组a[... 我觉得*(a+1)应该是数组元素呀??

C语言没有多维数组,只有多个一维数组的嵌套。

举个例子给你讲吧
a[3][3]= {1,2,3
4,5,6
7,8,9 }
其实是3个一维数组a[0] = {1,2,3};a[1]= {4,5,6};a[2]={7,8,9}组成的;
a表示数组名,也代表数组首地址。此首地址并非a[0][0]元素的地址,而是a[0]这个数组的地址(虽然具体数值一样,但意义不同);所以对于2为数组a[3][3]; a+1 表示的是一维数组a[1]的地址,
*(a+1)表示的是数组a[1]中第一个元素的地址,所以*(*(a+1)+2)表示数组a[1]中第3个元素的值也就相当于a[1][2],其值为6;
(*p)[3] = a; 表示p是一个指向一维数组的指针。 这时p指向第一个一维数组也就是 1,2,3这一行。 p+1表示指针指向了第二个一维数组也就是4,5,6;
用法上指针p和数组名a基本一样;
以后遇到a[m][n]不要再想象成二维数组,就想成m个1维数组编号从a[0]到a[m-1]每个数组里存了n个元素
展开
 我来答
ltc1002011
2014-03-10 · TA获得超过1636个赞
知道小有建树答主
回答量:446
采纳率:50%
帮助的人:351万
展开全部
他没错,你也没说错,但你理解不到位。
*(a+1)是数组元素。但a是二维数组,那你就要再进一步理解了。

因为a是二维数组名,即是一维数组a[0] 、a[1] 、a[2] 的首地址。
a+1就是 a[1]的地址。
*是取指针的值。
那么*(a+1)就是取 a[1]的值。
它是什么呢?它又是一个数组: a[1][0], a[1][1] ,a[1][2]。
而且 a[1]是它们的首地址。
即 a[1]的值就是 a[1][0]的地址。
追问

奋力冲
2014-03-10 · TA获得超过102个赞
知道答主
回答量:97
采纳率:100%
帮助的人:43.3万
展开全部
对啊,*(a+1)就是表示a[1]的存储位置的,*(a+num)表示的实质就是a[num],只是写法不一样,*(a+num)更接近本质。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
野兽FIGHT美女
2014-03-10
知道答主
回答量:1
采纳率:0%
帮助的人:1385
展开全部
是错的,a表示的是啊a[1]的首地址
追问
=.=
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式