C语言
来源:互联网 发布:分级基金 知乎 编辑:程序博客网 时间:2024/05/17 11:32
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975
我们分别从定义、声明方法和使用来进行对比,就会对两者的区别有个清晰的理解。
一、定义
1、指针函数:是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。2、函数指针:是指向函数的指针变量,其本质为一个指针,其实叫做函数的指针更好理解一些。区别:一个是函数,一个是指针,从本质上就不相同。
二、声明方法
1、指针函数: 类型名 *函数名(参数列表);
int *Func1(int x);//声明一个指针函数
2、函数指针: 类型名 ( *函数名)(参数列表);
int (* Func2)(int x);//声明一个函数指针
说明:
(1) Func1为函数名,表示函数的地址,函数的返回值类型为 int*;
(2) Func2为一个指针,指向一个返回值类型为int、函数参数列表为(int x)的函数。对于函数指针的声明方法还可这么理解,因为 (* Func2),所以Func2首先是一个指针,右边加上参数列表(int x),左边加上返回类型int,所以Func2是一个返回值类型为int、函数参数列表为(int x)的函数的指针。
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975
三、使用例程
1、指针函数:
//指针函数.cint *Func1(int a, int b);//声明一个指针函数int main(void){ int a,b; int *c = NULL; a = 3; b = 4; c = Func1(a, b); //调用Func1函数求a和b的和,将相加结果值所在的地址赋值给指针c; printf("a+b = %\n",*c); //将c地址里的值打印出来, 输出a+b = 7}int *Func1(int x, int y);//定义一个指针函数,实现两个数相加,将结果所在的地址返回{ static int sum = 0; sum = x + y; return ∑}
2、函数指针:
//函数指针.cint Func1(int x, int y);//声明一个函数,实现两个数相加int main(void){ int a,b,c; int (*Func)(int x, int y); //声明一个函数指针 a = 5; b = 6; Func = Func1; //函数指针初始化,之后可以直接使用Func实现Func1函数一样的功能 c = Func(a, b); //实现a和b相加,将结果赋值给c printf("a+b = %\n",c); //打印c的值, 输出a+b = 11}int Func1(int x, int y);//定义一个函数,实现两个数相加,将相加所得的值返回{ int sum = 0; sum = x + y; return sum;}
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://blog.csdn.net/huangxuesi/article/details/78030975
阅读全文
1 0
- C语言
- C语言
- C语言
- C语言
- C语言
- c语言
- C语言
- C语言
- C语言
- C语言
- c语言
- C语言
- C语言
- C语言
- c语言
- C语言
- c语言
- c语言
- angular2向组件中传值的问题
- Codeforces Round #434 k-rounding
- iOS银行卡验证
- 测试入门之缺陷管理
- HDU 6214 Smallest Minimum Cut 最小割(isap)
- C语言
- 9月18日云栖精选夜读:「阿里巴巴编码规范(Java版)」认证考试出炉!你考过了吗?
- 数据结构Java实现01----算法概述
- 用邻接矩阵创建无向网
- JAVA IO流最详解(一)
- java中的URLEncoder.encode对应JS中用decodeURIComponent,js和java编码,解码
- 单例设计模式----概述
- 5、群组函数:诺贝尔奖的更多练习
- fastDFS