【问题标题】: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 声明为 f、f 类型的七个元素的数组,描述了指向接受 int 并返回 int 的函数的指针。
顺便说一句,有一个转换器可以处理这类事情:cdecl: C gibberish ↔ English。