C语言复杂声明,指令函数
来源:互联网 发布:mac 桌面显示便签 编辑:程序博客网 时间:2024/06/10 16:10
《C专家编程》第三章介绍了如何分析复杂的声明,讲的非常不错。对于作者介绍的分析复杂声明的方法,我没有完全掌握,不过,我有我自己的一套方法来解析复杂的声明,正所谓条条大道通罗马,只要结果一样,必须在乎过程呢。今天在网上找了几个复杂的声明,练练手(声明的例子全部来自网络,原谅出处未详)。记下此文,作个标记,待日后回味。
int (*func)(int *p)
这个就不解释了,每本C语言参考书上都会有的。作为一个C/C++程序员还不会的话,说明你已经out了~~_~~
int (*func)(int *p, int (*f)(int*))
func是一个指针,指向一个函数,函数接收两个参数,第一个参数是int *,第二个参数是一个函数指针(该函数指针接收int *参数,返回int值),函数返回int值。使用typedef来简化一下:
[cpp] view plaincopy
- int (*func)(int *p, int (*f)(int*));
- /* 等价于 */
- typedef int (*functor1)(int *);
- typedef int (*functor2)(int *, functor1);
- functor2 func;
int (*func[5])(int *p)
func是一个包含5个元素的数组,数组中的每个元素是函数指针,函数接收int *参数,并返回int值。用typedef来简化一下:
[cpp] view plaincopy
- int (*func[5])(int *p);
- /* 等价于 */
- typedef (*functor)(int *);
- functor func[5];
int (*(*func)[5])(int *p))
func是一个指针,指针指向包含5个元素的数组,数组是的每个元素是函数指针,该函数接收int *参数,并返回int值。用下面的代码来表示一下func是个什么东东:
[cpp] view plaincopy
- int (*(*func)[5])(int *p);
- /* func是下面这个东东: */
- typedef int (*functor)(int *);
- functor arr[5];
- func = &arr;
int (*(*func)(int *p))[5]
func是一个指针,指针指向函数,函数接收int *参数,返回指针,指针指向包含5个元素的int型数组。用typedef来简化一下:
[cpp] view plaincopy
- int (*(*func)(int *p))[5];
- /* 等价于 */
- typedef int arr[5];
- typedef arr *(*functor)(int *);
- functor func;
int (*(*func)[5][6])[7][8]
func是一个指针,指针指向行数为5, 列数为6的二维数组,数组中保存的是指针,指针指向行数为7,列数为8的int型数组。下面的代码也许会让你更清楚一点:
[cpp] view plaincopy
- int (*(*func)[5][6])[7][8];
- /* see it: */
- typedef int arr[7][8];
- arr *func1[5][6];
- func = &func1;
int (*(*(*func)(int *))[5])(int *)
func是一个函数指针,函数接收int *参数,返回一个指针,指针指向包括5个元素的数组,数组中的元素是函数指针,函数接收int *参数,返回int值。用typedef简化一下下:
[cpp] view plaincopy
- int (*(*(*func)(int *))[5])(int *);
- /* 等价于 */
- typedef int (*functor1)(int *);
- typedef functor1 arr[5];
- typedef arr *(*functor2)(int *);
- functor2 func;
int (*(*func[7][8][9])(int*))[5]
func是一个三个数组,数组中的每个元素是指针,指针指向函数,函数指向int*参数,返回指几包含5个元素的int数组(嗷口),和typedef来简化一下:
[cpp] view plaincopy
- int (*(*func[7][8][9])(int*))[5];
- /* 等价于 */
- typedef int arr[5];
- typedef arr *(*functor)(int *);
- functor func[7][8][9];
看完这些例子,你晕了吗?赶紧找个美女,给你做人工呼吸吧~_~~~
- C语言复杂声明,指令函数
- C语言复杂函数声明解释
- C语言复杂声明
- C语言复杂声明
- C语言复杂声明
- C语言难点专题——复杂的函数声明
- c语言复杂变量声明(数组、指针、函数)
- C语言typedef与复杂函数声明问题详解
- C语言复杂标识符声明
- C语言复杂声明解析
- C语言中的复杂声明
- c语言 复杂声明 解析
- C语言复杂声明解析
- 解析C语言复杂声明
- 理解c语言复杂声明
- c 语言中的复杂声明
- C语言复杂声明解释
- C语言的复杂声明
- scala之尾递归实际用处2
- Visual Assist X 10.8.2048.0破解教程
- HDU 2034 人见人爱A-B
- ARCH64:怎样恢复函数的栈
- 我的博客,我的梦想
- C语言复杂声明,指令函数
- 学习笔记-基础知识8-集合框架(1)上
- 如何定位Android NDK开发中遇到的错误(内附我的总结补充)
- [hihoCoder 1014]Trie树[前缀树][前缀树的建立]
- UITableViewController-简单自定义单元格
- LeetCode226:Invert Binary Tree
- 软件列表
- Java基础:字符串
- 抽象工厂模式