返回信息流int[] (*f)();
int (*f[])();
int (*f)[]();
int (*f)()[];
int *(f[])();
这都是什么啊,总结了n次,可是在遇到还是傻傻分不清楚。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #75068同步于 2013/11/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
指针。。数组。。谁能给点头晕药。。。
mulala
2013/11/6镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
int[] (*f)(); f是指针,指向一个参数为空,返回值为int数组的函数
int (*f[])(); f是数组,数组里面存放一组指针,指针指向参数为空,返回值为int的函数
int (*f)[](); f是指针,指针指向一个数组,数组存放一组函数,函数参数为空,返回值为int
int (*f)()[]; f是指针,指向一个参数为空的函数,返回值是int数组类型(不确定)
int *(f[])(); f是数组,数组存放指针,指针指向参数为空,返回值为int的函数
可能有错,望指正
理解C语言的声明的优先级规则;
A.声明从它的名字开始读取,然后按照优先级顺序依次读取。
B.优先级从高到低依次是:
B.1 声明中被括号括起来的部分
B.2 后缀操作符:
括号()表示这是一个函数
方括号[]表示这是一个数组
B.3 前缀操作符:星号* 表示 “指向xx的指针”
C.如果const 和(或) volatile 关键字的后面紧跟类型说明符,如int,long等,那么他作用于类型说明符。其他情况下他们作用于他左边紧邻的指针星号
int[] (*f)();
依次应用规则A B1 B2 B3 f 是一个 指针 指向一个函数,这个函数返回一个数组?
这句应该编译错误,函数不能返回数组
int (*f[])();
int (*f)[]();
int (*f)()[];
int *(f[])();
依次应用规则A B2 B3 B2 f是一个数组,数组的元素是函数?,此函数返回一个指向int的指针
应该也是编译错误,数组元素不能是函数
剩下我也没看...自己试试~~
【 在 mulala 的大作中提到: 】
: int[] (*f)();
: int (*f[])();
: int (*f)[]();
: ...................