p是一个二级指针,c是一个存储指针的数组,接下来就读不出来了😫
这是一个非常复杂的声明,它描述了一个名为 c 的数组,该数组由 10 个指向函数指针的元素组成,每个函数指针都指向一个函数,该函数的参数是一个 int 类型的二级指针 **p,返回值是一个 char 指针 *。
可以将此声明拆分为以下部分:
// c is an array of 10 pointers to functions
char *(*c[10])(int **p);
// ^ ^ ^ ^
// | | | |
// | | | |
// | | | +-- 'p' is a pointer to a pointer to an int
// | | +------ Each function returns a pointer to a char
// | +--------- Each element is a function pointer
// +------------ 'c' is an array of 10 such function pointers
此声明可以读作:c 是一个由 10 个指向函数的指针组成的数组,每个函数都采用 int 类型的二级指针 **p 作为参数,并返回一个指向 char 的指针 *。
例如,以下是一个示例函数声明,符合上述声明:
char *my_func(int **p) {
// implementation...
}
可以将此函数分配给数组 c 中的一个元素,如下所示:
c[0] = &my_func;
或者,可以直接在数组元素中定义函数实现,如下所示:
c[0] = [](int **p) -> char * {
// implementation...
return nullptr;
};
不知道你这个问题是否已经解决, 如果还没有解决的话: