加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

认识复杂C声明的黄金法则

发布时间:2021-11-19 14:57:12 所属栏目:教程 来源:互联网
导读:黄金法则:从声明的变量开始,先向右看,再向左看,再向右看,再向左看 。如果向右看的时候遇到),则一直向左看,直到遇到(跳出这层括号。然后再重复向右看,向左看。 举例说明: 例子1 int a; a 的右边什么都没有,向左看int,说明a是一个int型变量。 例子2

黄金法则:从声明的变量开始,先向右看,再向左看,再向右看,再向左看 。如果向右看的时候遇到),则一直向左看,直到遇到(跳出这层括号。然后再重复向右看,向左看。
 
举例说明:
 
例子1
 
int a;
 
a 的右边什么都没有,向左看int,说明a是一个int型变量。
 
例子2
 
char *a;
 
向右看,什么都没有; 向左看是*, 说明a是一个指针; 再向右看,什么都没有; 再向左看是char,说明a是一个指向char的指针。
 
例子3
 
int *a[];
 
向右看,[]说明a是一个数组;向左看,*说明数组的每个元素是个指针;再向右看,什么都没有; 再向左看,int,每个指针指向一个整数。综合来看,a是一个数组,数组每个元素指向整数。
 
例子4
 
int * const a;
 
向a右边看,什么都没有。一直向左看,先是const,说明a是不可修改的,然后是*,说明a是一个指针;然后是int,说明指针指向整数。综合来看,a是一个不可修改的指针,它指向整数。
 
例子5
 
void (*checkout)();
 
向右看,遇见)返回,再向左看是*,说明checkout是个指针。再向右看,是(),说明这个指针指向函数; 向左看是void,说明函数返回void。总的来看, checkout是一个指向返回void的函数的指针。
 
例子6
 
void (*checkout[])()
 
向右看,[]说明checkout是一个数组;向左看, *说明数组每个元素是个指针。向右看,遇见)返回;再向左看,遇见(返回。再向右看,是(),说明数组内每个指针指向函数; 向左看是void,说明每个函数返回void。
 
总的来看, checkout是一个数组,数组内都是指向返回void的函数的指针。
 
例子7
 
void (*(*checkout)[])()
 
向右看,遇见)返回; 向左看,*说明checkout是个指针,遇到(跳出一层()。向右看,[]说明checkout指向的是一个数组;向左看, *说明数组每个元素是个指针。向右看遇见),向左看遇见(,跳出一层()。向右看,()说明数组每个元素指向一个函数;再向左看,void说明每个数组元素指向的函数返回void。
 
总结:checkout是一个指针,指向一个数组,每个数组元素都是一个指向返回void函数的指针。
 
据说C++的面向对象和多态就是靠函数指针和函数指针数组实现的。

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读