复杂表达式解读。eg:char (*(*x())[])()
来源:互联网 发布:中国贫民窟 知乎 编辑:程序博客网 时间:2024/04/29 05:55
Thinking in C++ 里 作者介绍了一个简单的方法来解读复杂的定义式, 称为right-left guideline. 简单的说就是从中间的变量名开始, 按右-左-右-左...的顺序来读. 以这个题目为例:
char (*(*x())[])()
从x开始:
1.向右看到(), x是一个函数定义, 没有参数;
2.向左看到*, x的返回值是指针;
3.向右看到[], 指针指向数组;
4.向左看到*, 数组的元素也是指针;
5.向右看到(), 指针指向的是函数, 即函数指针, 而且函数没有参数.
6.向左看到char, 函数的返回值是char.
所以, x是一个没有参数的函数, 它的返回值是指向一个数组的指针, 而这个数组的元素是函数指针, 指向的函数没有参数, 且返回char.
char (*(*x())[])()
从x开始:
1.向右看到(), x是一个函数定义, 没有参数;
2.向左看到*, x的返回值是指针;
3.向右看到[], 指针指向数组;
4.向左看到*, 数组的元素也是指针;
5.向右看到(), 指针指向的是函数, 即函数指针, 而且函数没有参数.
6.向左看到char, 函数的返回值是char.
所以, x是一个没有参数的函数, 它的返回值是指向一个数组的指针, 而这个数组的元素是函数指针, 指向的函数没有参数, 且返回char.
- 复杂表达式解读。eg:char (*(*x())[])()
- 复杂表达式定义 char (*(*x())[])();
- 解读复杂定义char *(*c[10])(int **p);
- eg
- 解读C语言复杂的声明:char * (*(*a[N])())()
- 复杂指针解读
- 解读复杂指针声明
- 如何解读复杂声明
- C语言复杂声明:char *(*(**(*(*(*x[5])(int,float))[][12])(double))(short,long))[][173];
- Char (*(*x())[]) ()
- (char*)&x 和 char*&x
- 如何解读复杂指针声明
- 如何解读复杂指针声明
- 【10-2】复杂表达式
- python 复杂表达式
- 复杂正则表达式一
- (char *)&p[x]=x
- AFNetWorking3.x完全解读
- 落地数据和不落地数据
- google code 免费svn服务器
- 【Alex专栏】Kinect应用设计 1
- 合理使用MySQL索引建立高质量查询语句
- 读《Unix编程艺术》笔记
- 复杂表达式解读。eg:char (*(*x())[])()
- STL学习小结
- ListView飞入加载item及滑动删除item
- 每月天数
- [Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
- firephp使用说明
- 面试题2
- 学习之路
- 【Adobe AIR学习笔记】Adobe AIR 3新特性