二维数组名的本质是 二维数组名与二级指针有什么区别?
二维数组名与二级指针有什么区别?
C语言中的二维数组名是一个二重指针吗?
1。二维数组名不是辅助指针,它只是一个特殊的常量指针。三维、四维甚至n维数组也是如此。只要它是一个数组,它就是一个普通的常量指针。2辅助指针P也可以解释为指针的指针,即存储在P中的值实际上是一个指针。计算:*P值实际上是一个指针值,那么*(*P)是第二个指针的最终值。对于二维数组a[2][2],a也是一个地址,这个值也等于a[0],它也等于a[0[0]的地址,即&A[0][0]。从这个角度来看,a的地址值是一个变量值(不是指针),因此a不是辅助指针,最多是主指针。
二维数组名为什么不能直接赋值给二级指针?
如果您的问题是:为什么int a[3][4]int**P=a报告错误,我理解?答:你所理解的是对的,但错误的是a指向一维数组,P指向int*,这是不等价的。A指向一维int数组,内存大小为sizeof(int)*数组长度;P仅指向int*类型指针,内存大小为4。指针的类型实际上是不同的。你可能有疑问。为什么能把int b[10]的一维数组赋给int*Pb=b?这是因为数组退化为指针。只有第一维数组可以用作第一个地址,而不需要确定数组的长度。关于数组名是否可以用作正确的值有一个讨论。如果要实现指针赋值,可以这样定义int(*P)[4]=a。可以理解P是指向int[4]一维数组的指针
二维数组名的本质是 *p++和*(p++)的区别 二维数组名赋给指针变量
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。