函数指针
2015-09-12 13:53
274 查看
昨晚同学问我关于返回函数指针的函数。。发现学过又忘了,于是写了此篇文章,。
1.返回指针的函数
类型名 *函数名(参数列表)
例如:
happy是函数名,调用它能返回一个指向整型的指针值。x是函数happy的形参。happy,的两侧分别为“
2.指向函数的指针变量
类型说明符 (*变量名)()
“*变量名”用括号扩起来,表示该变量名首先被定义为指针变量。其后的空括号表示该指针指向的是一个函数,最前面是类型说明符,定义了该函数的返回值。
定义p是一个指向函数的指针变量,该函数的返回值是整型。p是专门用来存放整型函数的入口地址,但定义时它并不指向哪一个具体的函数,而是空指针。
例子:
3.返回函数指针的函数
例子
int (*get_function(int a))(int , int )是一个返回函数指针的函数。
首先get_function, 运算符()的优先级比
1.返回指针的函数
类型名 *函数名(参数列表)
例如:
int *happy(int x)
happy是函数名,调用它能返回一个指向整型的指针值。x是函数happy的形参。happy,的两侧分别为“
*”和“()”运算符。“()”优先级比”
*“高,因此,happy先与()结合,表明happy是函数形式。而函数前面有一个
*,表示此函数返回值为指针类型。
2.指向函数的指针变量
类型说明符 (*变量名)()
“*变量名”用括号扩起来,表示该变量名首先被定义为指针变量。其后的空括号表示该指针指向的是一个函数,最前面是类型说明符,定义了该函数的返回值。
int (*p)();
定义p是一个指向函数的指针变量,该函数的返回值是整型。p是专门用来存放整型函数的入口地址,但定义时它并不指向哪一个具体的函数,而是空指针。
例子:
#include <stdio.h> int f(int x) { return x*5; } int main(void) { int (*p)(); int a; p = f; a = 6; printf("(*p)(a) = %d\n",(*p)(a));//用函数指针参数调用函数 printf("p(2a) = %d\n",p(2*a));//p(a)以指针变量名代替函数名来调用 }
3.返回函数指针的函数
例子
#include<stdio.h> int get_big(int i,int j) { return i>j?i:j; } int (*get_function(int a))(int , int ) { printf("the number is %d\n",a); return get_big; } int main(void) { int i = 5,j = 10,max; int (*p)(int ,int); p = get_function(100); max = p(i , j); printf("The MAX is %d\n",max); return 0 }
int (*get_function(int a))(int , int )是一个返回函数指针的函数。
首先get_function, 运算符()的优先级比
*高,get_function先与()结合,所以get_function(int a)是含有一个整型参数的函数。返回值比较特殊,返回值是
int(*)(int ,int),也就是它的返回的是一个指向函数的指针。
相关文章推荐
- Linux下MySql忘记 root密码的解决办法
- leetcode 刷道题 70 earch Insert Position 二进制搜索插入位置
- 2015年9月12日模拟赛总结
- EJB杂项
- State模式及与Strategy/Commmand/Chain of Resposibility区别
- Android Notification (转)
- 你见过最好的幼儿园
- (二)我的JavaScript系列:JavaScript面向对象旅程(下)
- 网页布局基础
- 浅谈.net remoting 与webservice
- iOS 裁剪图片
- C/C++常用头文件及函数汇总
- 第二周项目三—体验复杂度(2)
- Tian Ji -- The Horse Racing 2287 (好题 数学逻辑)
- 浅谈Android的三种数据持久化技术之文件存储
- 网络电视精灵2
- #1164 : 随机斐波那契
- discuz 使用阿里云OSS
- [Android]关于换肤功能的遐想篇
- Delphi XE5,C++ Builder XE5,RAD Studio XE5 v19.0.14356.6604(With Update 2) 官方下载激活