gpt4 book ai didi

c - 描述: int (*(*var[3])())(void (*)());

转载 作者:行者123 更新时间:2023-11-30 20:04:35 26 4
gpt4 key购买 nike

int (*(*var[3])())(void (*)());

您如何描述上述声明中 var 的类型?

我得到:

将 var 声明为包含 3 个函数指针的数组 (A)

  • 这些函数 (A) 接受任何输入并返回指向函数 (B) 的指针

  • 这些函数 (B) 接受一个指向函数 (C) 的指针并返回 int

  • 这些函数 (C) 接受任何输入并且不返回任何内容

这是对的吗?谢谢

最佳答案

从最左边的标识符开始,然后逐步解决,记住 ()[]* 之前绑定(bind),因此:

T *a[N]      // a is an array of pointer to T
T (*a)[N] // a is a pointer to an array of T
T *f() // f is a function returning pointer to T
T (*f)() // f is a pointer to a function returning T

编辑

尽管 const 没有出现在这个声明中,但它也可能会带来一些问题:

T const *p   // p is a pointer to constant T
const T *p // same as above

在这两种情况下,p 都指向常量T。您可以写入 p (使其指向不同的对象),但无法写入 *p (您无法更新该事物的值 p 指向)。

T * const p  // p is a constant pointer to T

这将 p 声明为指向 T 的常量指针;您可以写入 *p (更新 p 指向的事物的值,假设 *p 产生可修改的左值),但是您无法写入 p (无法使其指向不同的对象)。

结束编辑

所以

        var                      -- var is a
var[3] -- 3-element array of
*var[3] -- pointer to
(*var[3])() -- function taking
(*var[3])() -- unspecified parameters
*(*var[3])() -- returning pointer to
(*(*var[3])())( ) -- function taking
(*(*var[3])())( ) -- unnamed parameter is a
(*(*var[3])())( * ) -- pointer to
(*(*var[3])())( (*)()) -- function taking
(*(*var[3])())( (*)()) -- unspecified parameters
(*(*var[3])())(void (*)()) -- returning void
int (*(*var[3])())(void (*)()); -- returning int

因此,var 是一个指向函数的指针的 3 元素数组,每个函数都返回一个指向另一个函数的指针(该函数将指向另一个函数的指针作为一个参数),返回 int

关于c - 描述: int (*(*var[3])())(void (*)());,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39348447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com