这题有意思, 首先 int a [] [3] = {1,2,3,4,5,6}; 是一个二维数组,但是内存空间中这些数据的存储是连续的。可以理解为 int a [5] = {1,2,3,4,5,6}; a存储的都是数组的首元素地址,区别在于以为一维数组的下标代表的是地址,二维数组下标代表的是行和列的个数。 int (*p)[3]; 这里是用指针的形式 声明一个新的数组, p = a; 这里把a数组的首元素地址赋给 指针数组,此时新声明的指针数组就指向了a数组,*p就等于a[0]; 所以 (*p)[2]等价于a[2] = 3;一维数组下标为二的元素追问