c++ 数组指针、指针数组、函数指针

[]优先级比*高,低于(),根据这个原则去判断
数组指针
数组指针即数组的指针,是一个指针,指向一个数组;也称为行指针
Int (P)[2] (能够理解为Int ()[2]P,可是不能这样子定义)P是一个指针,指向一个数组,数组元素是int长度为2
二维数组能够赋值给数组指针
int a[3][4];
int (*p)[4];
p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //p指向a[1][]web

指针数组
指针数组是一个数组,元素为指针
Int * P[4](能够理解为Int *[2]P,可是不能这样子定义) []优先级高,P是一个长度为4数组,元素是整型指针数组

如要将二维数组赋给一指针数组(要分别赋值):
int *p[3];
int a[3][4];
p++; //该语句表示p数组指向下一个数组元素。注:此数组每个元素都是一个指针
for(i=0;i<3;i++)
p[i]=a[i]svg

“数组名被改写成一个指针参数”规则并非递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:函数

实参 所匹配的形参指针

数组的数组 char c[8][10]; char (*)[10]; 数组指针xml

指针数组 char *c[10]; char **c; 指针的指针递归

数组指针(行指针) char (*c)[10]; char (*c)[10]; 不改变it

指针的指针 char **c; char **c; 不改变webkit

函数指针
函数指针就是函数的指针。它是一个指针,指向一个函数。二维数组

char * (fun)(char * p1,char * p2) 能够理解为( char * ()(char * p1,char * p2)fun)  参考数组指针 int (*)[10] p int (*p)[10] fun一个指针,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针