怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?

2023-07-06   


这个问题至少有以下3 种答案:
   1. char *(*(*a[N])())();
   2. 用typedef 逐步完成声明:
   typedef char *pc; /* 字符指针*/
   typedef pc fpc(); /* 返回字符指针的函数*/
   typedef fpc *pfpc; /* 上面函数的指针*/
   typedef pfpc fpfpc(); /* 返回函数指针的函数*/
   typedef fpfpc *pfpfpc; /* 上面函数的指针*/
   pfpfpc a[N]; /* 上面指针的数组*/
   3. 使用cdecl 程序, 它可以把英文翻译成C 或者把C 翻译成英文:
   cdecl> declare a as array of pointer to function returning pointer to function returning pointer to char
   char *(*(*a[])())()
   通过类型转换, cdecl 也可以用于解释复杂的声明, 指出参数应该进入哪一对括号(如同在上述的复杂函数定义中)


相关内容:

  1. C语言怎样定义和声明全局变量和函数最好
  2. 怎样声明接口
  3. 怎样声明一个匿名的内部类
  4. Python中如何定义一个函数
  5. C语言中一个结构不能包含指向自己的指针吗
  6. C语言中一个结构不能包含指向自己的指针吗