lor*_*ara 2 c variables pointers right-to-left
这是一个问题:
使用右 - 左规则编写一个名为fubar的变量的C定义,该变量是一个指向函数的指针,该函数接受一个指向char的指针并返回一个指向7个元素的数组的指针,其中每个元素都是一个指针到结构Sporcle.
我的答案:
*( (Sporcle*)[7] ) ( *fubar )( char* );
任何人都可以验证我的答案和/或给我一些指示(没有双关语)?
编辑答案:
( (struct Sporcle*)[7] ) *( *fubar )( char* );
最终答案
struct Sporcle *(*(*fubar)(char *))[7];
caf*_*caf 15
一次建立一块:
一个名为fubar... 的变量
fubar
Run Code Online (Sandbox Code Playgroud)
......那是一个指针......
*fubar
Run Code Online (Sandbox Code Playgroud)
...到一个功能......
(*fubar)()
Run Code Online (Sandbox Code Playgroud)
......带有指向char的指针......
(*fubar)(char *)
Run Code Online (Sandbox Code Playgroud)
...并返回一个指针......
*(*fubar)(char *)
Run Code Online (Sandbox Code Playgroud)
...到7个元素的数组......
(*(*fubar)(char *))[7]
Run Code Online (Sandbox Code Playgroud)
...每个元素都是一个指针......
*(*(*fubar)(char *))[7]
Run Code Online (Sandbox Code Playgroud)
......到struct Sporcle.
struct Sporcle *(*(*fubar)(char *))[7]
Run Code Online (Sandbox Code Playgroud)
你的答案是不正确-在左边(叫的东西声明说明)只能直接指定类型(如基本类型int,一struct,union,enum或类型名称与定义typedef,任选与存储类的像修改static和/或类型说明者喜欢const).指针,阵列和功能类型通过修改声明的右手侧(称为构造说明符),通过添加*,[]或()给它.
在这种情况下,声明说明符是struct Sporcle,而余数是声明符.