char *(* c[10])(int **p);怎么解读?

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;
};
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^