怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
这个问题至少有以下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. 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 也可以用于解释复杂的声明, 指出参数应该进入哪一对括号(如同在上述的复杂函数定义中)
【怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?】相关文章
1. 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2. 编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
3. 请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
4. 写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
6. 用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
7. 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
8. 我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
9. 请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
10. 函数指针的定义是什么
本文来源:https://www.mianshiwenti.com/a13160.html
进入下载页面
上一篇:"序列点" 是什么
下一篇:函数指针的定义是什么