c语言指针问题,不理解其中的*a与a等价的关系。

设有整型二维数组a[3][4],C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即a[0],a[1],a[2]。从二维数组的角度来看,a... 设有整型二维数组a[3][4],
C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a 可分
解为三个一维数组,即a[0],a[1],a[2]。
从二维数组的角度来看,a 是二维数组名,a 代表整个二维数组的首地址,也是二维数组0 行的首地址。a+1 代表第一行的首地址。
a[0]是第一个一维数组的数组名和首地址,*(a+0)或*a是与a[0]等效
的, 它表示一维数组a[0]0 号元素的首地址。因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。
to xingying2000
如果a代表二维数组的首地址,那么*a不就代表a[0][0]的数值么?数值和地址怎么能相等呢?
展开
 我来答
xingying2000
2008-06-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
假设这个二维数组的首地址的值是2000H的话

表示形式 含义 地址
a 二维数组名,
指向一维数组a[0],即
第0行首地址 2000H

a[0],*(a+0) 第0行第0列元素的地址 2000H
*a,&a[0][0]

a,a[0],*(a+0),*a,&a[0][0]是相等的结论成立.

问题补充:
注意 a是一个地址 而*a 也可以是一个地址
在这个题目中我们可以把 a看成是一个指向指针的指针
什么意思呢?
就是a中存放的是另一个指针变量的地址 则*a表示的是另一个指针变量的值 *a 也是一个地址
例如:
两个指针变量
p1和p2 如果p1中存放的是p2的地址
则*p1=p2=一个地址值
你看*p1不也是一个地址值了么
就可以这样定义p1
int **p1;
micky42308
2008-06-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你说的例子里面a与*a的数值是相等的,但是代表的意义不同,只能说成是相等,不能说成是等价。
a相当与int **
*a相当与int*
类型不同
a代表二维数组的首地址,*a代表第一行的数组的地址,他们的值是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
劉ˉ帥帥
2008-06-26
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
212121
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酆轩真耘豪
2019-08-07
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
等价的,一个是在定义的时候就让指针p指向a[0]的地址,一个是先定义指针p然后再讲a[0]的地址复制给p,结果是一样的。只是在编辑器跑的时候有点差别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式