C语言关于二维数组指针表示方法

int array[4]={1,2,3,4}; 那么根据定义知道数组名称array就是这个数组 的首地址 = array[0]=&array[0][0] 那么为什么 用printf("%p,%p",array,*array) 这俩个结果相同 也就是 array所表示的地址 与*array值是相同的 正常来说 *array 不应该等于 *&array[... int array[4]={1,2,3,4}; 那么根据定义知道数组名称array就是这个数组 的首地址 = array[0]=&array[0][0] 那么为什么 用printf("%p,%p",array,*array) 这俩个结果相同 也就是 array所表示的地址 与*array值是相同的 正常来说 *array 不应该等于 *&array[0][0]=1 吗 这点我就没明白 而且 **array经过输出是等于1的 很不理解 我的问题就是 *array为什么还是 数组的首地址? 刚才 问的问题 按错键了 就采纳了 这回 哪位大神帮帮我. 展开

第1个回答  2019-05-17
虽然说“首地址
=
array[0]=&array[0][0]”,这只代表他们的值相同,意义不同的。
array是二维指针变量,array[0]是一维指针变量,&array[0][0]是变量的地址。
*array
表示二维指针前加*
等于一维指针array[0],值还是以前的值,但是意义不同。
相似回答