【问题标题】:how to store function pointers in array如何在数组中存储函数指针
【发布时间】:2022-11-17 19:03:36
【问题描述】:
typedef int (*t_built)(t_cmds *, t_table *);

struct cmdline
{
   char *      reserved[7]; /* "echo pwd cd unset export exit env" */
   t_built     builtin[7];
}

如何将内置函数存储到具有与保留数组中相同索引的内置数组中。你能帮我理解这个语法是如何工作的,以及为函数指针声明的 typedef 是什么。

【问题讨论】:

    标签: c function struct function-pointers typedef


    【解决方案1】:

    让我们分解声明:

    int f(int);
    

    f 声明为一个接受 int 并返回 int 的函数。

    这可以用括号来写(这在这里没用但无害):

    int (f)(int);
    

    以下声明:

    int *f(int);
    

    f 声明为一个接受 int 并返回指向 int 的指针的函数。

    这一次,括号改变了评估的顺序:

    int (*f)(int);
    

    f 声明为指向接受 int 并返回 int 的函数的指针。

    typedef 用于定义类型而不是变量。

    最后是顺序:

    typedef int (*f)(int);
    f a[7];
    

    a 声明为 ff 类型的七个元素的数组,描述了指向接受 int 并返回 int 的函数的指针。

    顺便说一句,有一个转换器可以处理这类事情:cdecl: C gibberish ↔ English

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2016-02-12
      • 2011-02-02
      • 2013-05-15
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多