指针数组、数组指针这两个概念看似相同,其实差别很大,容易混淆。
指针数组,是一个数组,每个元素都是一个指针。例,char *p[4]
数组指针,是一个指针,这个指针中保存的是一个数组的地址。例,char (*pp)[4]
举例:
//指针数组
char *pp[3]; //优先级:[] 大于 *,所以首先pp应该是个数组
pp[0] = new char[10];
cout<<sizeof(pp)<<endl; //输出:12,因为是数组,3个指针类型的元素,3*4=12
//数组指针
char (*p)[3]; //优先级:加括号的* 大于 [],所以首先p应该是个指针
char c[3] = "12";
p = &c;
cout<<*p<<endl; //输出:12
cout<<sizeof(p)<<endl; //输出:4,因为是指针