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除了值相同外,其它的各方面都是不同的。
对于
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除了值相同外,其它的各方面都是不同的。
展开全部
数据名可以看作指针常量,分配数组空间时指针值就确定下来了,不像声明的指针变量那样,值是不能改变的。*a=a[0],对于二维数组a[0]也是一个指针,他们都指向数组的首地址,值都相等,但是,a和a[0]虽然值相等,但对他们进行指针运算时,地址偏移的基础不同。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a是这个二维数据首地址,*a是第一个元素值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实不大 *a就是a[0]都是第一行的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有无指针指向的区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询