int main() {
int abc[] = {1,2};
int(*q)[2] = &abc; //数组指针,指向数组abc的地址
int* p = abc; //一级指针指向数组abc的首元素地址
cout <<"q="<< q << "\t&abc=" << &abc << "\tp=" << p << "\t&abc[0]=" << &abc[0];
}
数组的地址&abc和数组首元素的地址是相同的,数组名又是数组首元素地址,所以上面输出的内容都一样,int(*q)[2] = &abc,这是一个二级指针,指向的是一级指针(数组)的地址,q+1相当于p+2,直接移动了一个整个数组的位置,指向数组第二个元素后一个位置。