C语言中一个二维数组 它的数组名是a 那a和*a有什么区别?

 我来答
风若远去何人留
2015-10-24 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450110
专业C/C++软件开发

向TA提问 私信TA
展开全部
对于二维数组名a和*a,二者的区别在于类型不同。
对于
TYPE a[M][N];
当使用a时,可以等同于二级指针TYPE **型。
而使用*a时,等同于TYPE*型。
从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。比如 对a的操作a[4]表示a的第四行首地址,而对*a的操作(*a)[4]则代表第一行的第4个元素,即a[0][4]。

所以a和*a除了值相同外,其它的各方面都是不同的。
lishiguang1984
2014-11-24 · TA获得超过325个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:66.7万
展开全部
数据名可以看作指针常量,分配数组空间时指针值就确定下来了,不像声明的指针变量那样,值是不能改变的。*a=a[0],对于二维数组a[0]也是一个指针,他们都指向数组的首地址,值都相等,但是,a和a[0]虽然值相等,但对他们进行指针运算时,地址偏移的基础不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangjianye360
2014-11-23
知道答主
回答量:5
采纳率:0%
帮助的人:6348
展开全部
a是这个二维数据首地址,*a是第一个元素值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无线自组网_ttt
2014-11-23 · 超过34用户采纳过TA的回答
知道答主
回答量:144
采纳率:0%
帮助的人:68万
展开全部
其实不大 *a就是a[0]都是第一行的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
声航0gM
2014-11-23 · TA获得超过748个赞
知道小有建树答主
回答量:551
采纳率:73%
帮助的人:193万
展开全部
有无指针指向的区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式