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

如题所述

对于二维数组名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除了值相同外,其它的各方面都是不同的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-24
数据名可以看作指针常量,分配数组空间时指针值就确定下来了,不像声明的指针变量那样,值是不能改变的。*a=a[0],对于二维数组a[0]也是一个指针,他们都指向数组的首地址,值都相等,但是,a和a[0]虽然值相等,但对他们进行指针运算时,地址偏移的基础不同。本回答被提问者和网友采纳
第2个回答  2014-11-23
a是这个二维数据首地址,*a是第一个元素值。
第3个回答  2014-11-23
其实不大 *a就是a[0]都是第一行的地址
第4个回答  2014-11-23
有无指针指向的区别。
相似回答