定义了一个函数指针数组
对于这种定义,通法就是先进行运算符优先级/结合性的判断,然后由里向外分析
这里char *(*p[2])(const char *, const char *)
分析后可知等效于
char *(*(p[2]))(const char *, const char *)
然后由里向外分析,首先这里定义/声明的是一个标识符p,
那么p是什么呢?由p[2]可知是一个有两个元素的一维数组,所以p本质是一个数组;
该数组的成员是什么呢?由*(p[2])可知,元素是指针;
指针指向的又是什么呢?由char *(*(p[2]))(const char *, const char *)可知,该指针指向的是一个函数
该函数有两个参数,参数类型都是是const char *,且该函数返回值为char *
所以整理一下上述信息,可知定义/声明了一个函数指针数组p
相当于:
class String
{
const char a[];
const char b[];
}
string p[][2];
应该是这样。