gpt4 book ai didi

定义变量时复杂的从右到左规则

转载 作者:行者123 更新时间:2023-12-02 05:24:03 26 4
gpt4 key购买 nike

这是问题:
使用左右规则写出 C 一个名为 fubar 的变量的定义,它是一个指向函数的指针
接受一个指向 char 的指针并返回一个指向 7 个元素的数组的指针,其中每个元素都是一个指向
结构体。

我的答案:
*( (Sporcle*)[7] ) ( *fubar )( char* );
任何人都可以验证我的答案和/或给我一些指示(不是双关语)?

编辑答案:
( (struct Sporcle*)[7] ) *( *fubar )( char* );
最终答案
struct Sporcle *(*(*fubar)(char *))[7];

最佳答案

一次构建一个:

一个名为 fubar 的变量......

fubar

……那是一个指针……
*fubar

...到一个函数...
(*fubar)()

...需要一个指向字符的指针...
(*fubar)(char *)

...并返回一个指针...
*(*fubar)(char *)

...到一个包含 7 个元素的数组...
(*(*fubar)(char *))[7]

...其中每个元素都是一个指针...
*(*(*fubar)(char *))[7]

...到 struct Sporcle
struct Sporcle *(*(*fubar)(char *))[7]

你的答案是不正确的 - 左边的东西(称为声明说明符)只能直接指定一个类型(基类型,如 intstructunionenum 或使用 0x1044 定义的类型名称,如可选修改存储类,7 typedef 和/或类型说明符,如 static )。指针、数组和函数类型是通过修改声明的右侧(称为声明符),通过添加 const*[] 来构造的。

在这种情况下,声明说明符是 (),其余部分是声明符。

关于定义变量时复杂的从右到左规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8392228/

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