【问题标题】:C array with "[ ]) (char **)"带有“[]) (char **)”的 C 数组
【发布时间】:2019-08-04 21:09:20
【问题描述】:

我在lsh 来源中找到了以下声明:

int (*builtin_func[]) (char **) = {
  &lsh_cd,
  &lsh_help,
  &lsh_exit
};

我对 C 语言比较陌生,但 (*builtin_func[]) (char **) 看起来很奇怪。什么意思?

(我更感兴趣的是声明,而不是代码的目的。)

【问题讨论】:

  • 指向函数的指针数组返回int,并将指向char的指针作为参数
  • 将声明粘贴到cdecl.org,它会翻译成英文。
  • 来自cdecl.org的解释
  • What is a jump table?的可能重复

标签: c arrays declaration


【解决方案1】:

int (*builtin_func[]) (char **)

表示变量builtin_func定义为

指向函数的指针数组不完整,这些函数使用指向 char 的指针并返回整数。

接下来,

= { &lsh_cd, &lsh_help, &lsh_exit };

初始化器列表将完成数组,使其包含 3 个这样的指针——假设所有 3 个函数都遵循类似的签名。

【讨论】:

  • 这些函数名上的&也是多余的。
  • 复合文字?我在这里看不到任何复合文字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 2017-08-07
  • 2012-06-16
  • 2019-04-11
  • 2017-12-03
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多