Pypyxf 2023-04-14 15:19 采纳率: 100%
浏览 28
已结题

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

p是一个二级指针,c是一个存储指针的数组,接下来就读不出来了😫

  • 写回答

2条回答 默认 最新

  • IT大鸵鸟 2023-04-14 15:30
    关注

    这是一个非常复杂的声明,它描述了一个名为 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;
    };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日