理解复杂C声明
来源:互联网 发布:淘宝发布定制产品 编辑:程序博客网 时间:2024/05/16 08:10
在看别人程序火写程序之肯定会先声明变量那如何正确的去看这些声明,首先需要知道“右左法则”这在理解复杂声明时很重要。
在使用“右左法则”时先确定变量的位置。先向变量的右边读再向左边读。
先从简单开始:
int a;整型变量 int *a;整型指针变量int **a;整型指针的指针变量
Int *a[10]; 整形指针数组 int (*a)[10]; 整型数组指针变量 int (*a)(int);函数指针变量
Int (*a[10])(int) 函数指针数组
这个法则,能让你准确理解所有的声明。这个法则运用如下:从最内部的括号开始阅读声明,向右看,然后向左看。当你碰到一个括号时就调转阅读的方向。括号内的所有内容都分析完毕就跳出括号的范围。这样继续,直到整个声明都被分析完毕。
对复杂声明也同样适用,如下:
int * (* (*fp1) (int) ) [10];
fp1:函数指针变量,指向一个形参int,返回值为数组指针,该指针指向一个整型指针数组;
阅读步骤:
1. 从变量名开始 -------------------------------------------- fp1
2. 往右看,什么也没有,碰到了),因此往左看,碰到一个* ------一个指针
3. 跳出括号,碰到了(int) -----------------------------------一个带一个int参数的函数
4. 向左看,发现一个* ---------------------------------------(函数)返回一个指针
5. 跳出括号,向右看,碰到[10] ------------------------------一个10元素的数组
6. 向左看,发现一个* ---------------------------------------指针
7. 向左看,发现int ----------------------------------------- int类型
总结:fp1被声明成为一个函数的指针,该函数返回指向指针数组的指针.
float ( * ( * e[10]) (int *) ) [5];
e是一个函数指针数组,该数组的元素指向一个形参为int *,返回值为数组指针,该指针指向float型的数组;
float ( * ( *b()) [] )();
b是一个函数,该函数形参为空,返回值为数组指针,该数组指针指向一个函数指针数组,数组里的元素指向一个形参为空,返回值为float;
- 理解复杂C声明
- 理解c语言复杂声明
- 理解C中复杂声明
- C/C++:如何理解复杂的声明
- C/C++:如何理解复杂的声明
- C/C++:如何理解复杂的声明
- 理解c中复杂的声明语法
- C语言复杂类型声明怎么理解?
- 理解C复杂声明之'优先级规则'
- 理解C复杂声明之'优先级规则'
- 如何理解复杂的C/C++声明
- 理解复杂的C/C++声明
- 如何理解复杂的C/C++ 声明
- 如何理解复杂的C/C++声明
- 如何理解复杂的C/C++声明
- C 语言复杂声明的理解
- 理解复杂的c变量声明
- 理解 C 语言中的复杂声明
- 位运算笔记
- day 11 database
- 第八讲 拖放功能
- 机器学习的正则化
- 常用php验证
- 理解复杂C声明
- xcode写C语言的数据类型与vs的不同
- Android 命名规范
- 当心空指针异常——将头像存储到T_User用户信息表里
- Android安装Ubuntu13.10
- LeetCode 216. Combination Sum III
- [LeetCode] 134. Gas Station
- Java 中的集合框架
- sbt安装与配置