- 先说明第一个问题:[]的优先级比*要高
int *p1[n];
是一个指针数组,是一个存储指针的数组,含有多个指针。int (*p)[n];
是一个数组指针,是一个指向一维数组的指针,只有一根指针。- 示意图如下:
- 在这里我们用一段代码就可以说明数组指针和指针数组的区别
#include<iostream>
using namespace std;
int main(){
int *p=new int[5]{2,3,4,5,6};
int **pp1=&p;
int **pp2=new int*[5];
for(int i=0;i<5;++i)
pp2[i]=&p[i];
cout<<"pp1[0]的地址:"<<pp1[0]<<" pp2[0]的地址:"<<pp2[0]<<endl;
cout<<"pp1[0]的地址指向的值:"<<*pp1[0]<<" pp2[0]的地址指向的值:"<<*pp2[0]<<endl;
cout<<"pp1[1]的地址:"<<pp1[1]<<" pp2[1]的地址:"<<pp2[1]<<endl;
cout<<"pp1[1]的地址指向的值:"<<*pp1[1]