您的位置:首页 > 其它

指针高级

2013-10-23 20:30 211 查看
int *f();

 ()函数调用操作符优先级高于间接访问操作符* 

 返回一个整形指针的函数

 int (* f)();

 第一个括号起到聚组的作用,第二个括号是函数调用操作符,使第一个括号先执行

 函数指针

int *(* f)()

与上面的相同是一个函数指针,返回值是一个整形指针

int f[]

[]与()的优先级相同

整形数组

int *f[]

元素类型指向整形指针的数组

int f()[]

返回一个整形数组的函数    函数只能返回标量值 故这个声明是非法的

int f[]()

元素类型指向返回值为整型的函数的数组  非法的数组元素要求大小都一样,但是函数大小不一样

 int  (* f[])()

按照优先级 第一个括号*f[] 是一个元素为某种类型的指针的数组 第二个括号是一个函数调用操作符,

元素类型为返回为整型的函数指针数组

int *(*f[])()

与上面的相比多了一个间接访问操作符,

一个指针数组 指针指向的类型是返回值为整型指针的函数

int (*(*f)())[]

f as pointer to function returning pointer to array of int

int (*(*x)[10])()

x as pointer to array 10 of pointer to function returning int

函数的声明与使用

int f(int);

itn (*pf)(int) = &f;

初始化表达式中国的&操作符是可选的,因为函数名被使用时部是由编译器

把它转换为函数指针,&操作符只是显式地说明了编译器将隐式执行的任务

int ans ;

ans = f(25);

ans = (*pf)(25);

ans = pf(25);

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指名 指针高级