数组指针和指针数组以及数组首元素地址问题

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,直接移动了一个整个数组的位置,指向数组第二个元素后一个位置。

猜你喜欢

转载自blog.csdn.net/lxyhhhhhcl/article/details/132535574