1. 问题 想请教下为什么第二行是(*p)[3]而不是(*p)[2]呢 指针p指向的元素不是只有两行吗? int array[2][3] = { {0,1,2},{3,4,5} }; int (*p)[3] = array; 2. 回答 (*p)[3]是一个数组指针,它指向的是一个有三个元素的数组; 即p指向 {0,1,2}这个数组的起始地址; 而(p+1)则指向{3,4,5}这个数组的起始地址; 这个中括号里的3,指的是:数组指针指向的数组中的元素个数(或称大小)。 而不是你所想的那样。