20分 |
int *p[4] ,, p 是4个元素的数组,每个元素类型为int *
int (*p)[4] , p 是指针, 对应类型为int [4] |
20分 |
两者对应的是指针数组与数组指针
指针数组:数组的元素是指针变量 数组指针:指向数组的指针变量 |
这个简单,类型识别的依据是C语言的运算符优先级,括号优先级最高,其次是[]和.和->
int *p[4],先定位标志符p,然后根据运算符优先级确定p的结合顺序。 1)p的左边是*(指针),右边是[4],显然[]优先级较高,p与[4]结合,p[4],意思是p是长度为4的数组。 2)把p[4]看作一个整体,那么它的右边没东西了,然后看左边,*(指针),*(p[4]),数组元素的类型是指针。 3)把*(p[4])看作一个整体,右边没有,继续看左边,int,int (*(p[4])),指针的类型是int。 结论:p是长度为4的数组,数组的每个元素的类型是指针,指针指向int类型。 int (*p)[4],先定位标志符p。 1)先看p的右边,括号的优先级最高,括号内为*p,即p是指针。 2)*p看作一个整体,再往右边看,(*p)[4],指针指向长度为4的数组。 3)把(*p)[4]看作一个整体,往右看,没东西了,那就往左看,int,数组元素的类型是int。 结论:p是指针,指向长度为4的数组,数组的元素类型是int。 |