C语言指针函数和函数指针
我看傻了,所以整理一下。
指针函数
类型标识符* 函数名(参数表);
举例:int* fx(int x,int y);
解释:
第一ta是个函数
第二指针函数的返回的是地址,ps这边没读懂?来看一个例子。
#include <stdio.h> int* fun(int *a)
{ return a;
} int main(int argc, char **argv)
{ int a = 3; printf("%d", *(fun(&a))); return 0;
}
感觉没什么作用,指针函数,代表一个函数的返回值是指针,所以void*返回值类型为void类型的地址值。
函数指针
实际可以这样理解,指向变量的指针变量(例:int *p)和指向函数的指针变量,在定义上是不同的。//
- int(*pfunction)(int, int);//
“定义了一个指针变量 pfunction,该指针变量可以指向返回值类型为 int 型(关键一),且有两个整型参数的函数(关键二)。pfunction 的类型为 int(*)(int,int)。 ”
这个语句就定义了一个指向函数的指针变量 pfunction。首先它是一个指针变量,所以要有一个“*”,即(*p);其次前面的 int 表示这个指针变量可以指向返回值类型为 int 型的函数;后面括号中的两个 int 表示这个指针变量可以指向有两个参数且都是 int 型的函数。
函数返回值类型 (* 指针变量名) (函数参数列表);
函数返回值类型:表示该指针变量可以指向具体什么返回值类型的函数;//返回值类型与返回值密切相关。
函数参数列表:表示该指针变量可以指向具有什么参数列表的函数。
区分:
指向变量的指针变量。int* p
指向函数的指针变量。int(*p)(int,int)
int func(int x);//声明一个函数
int(*p)(int x);//定义一个函数指针
p=func; //将func函数的首地址赋给指针变量p
#include <stdio.h>
int MAX(int a,int b);
int main(void)
{int a,b,c;scanf("%d%d",&a,&b);int (*compare)(int a,int b);compare=MAX;//MAX这么用没问题吗,函数名就是地址 c=compare(a,b);printf("%d",c);return 0;
}
int MAX(int a,int b)
{int z;z=a>b?a:b;//return z;
}
其中
comepare=MAX;//第一种取值方式
compare=&MAX;//第二种取值方式//MAX是一个函数标识符,他的名字就是他的地址,如果是函数调用,
其中中>>叠词警告
c=compare(a,b);//第一种书写方式
c=(*compare)(a,b);//第二种书写方式
这是函数指针比较特殊的情况,也使函数指针变的异常好用。
总结:
1.与指针函数不同,函数指针 的本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数的指针。
2.指针函数: 它的本质是一个函数,不过它的返回值是一个指针。
3.重点是后面两个。
参考总结:
1.指针函数和函数指针_禹鼎侯的博客-CSDN博客_指针函数和函数指针
C语言指针函数和函数指针相关推荐
- 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )
文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...
- c语言回调函数_C语言学习第26篇---函数与指针分析 回调函数
函数类型的概念 1.C语言函数也是有类型的 2.函数类型由函数返回值,参数类型,参数个数共同决定 int add(int i,int j) 的类型是 int(int , int) 3.C语言中通过ty ...
- C语言enum(枚举)、指针、函数指针
C enum(枚举) 枚举是c语言中的一种数据类型,定义格式为 enum 枚举名{枚举元素1,枚举元素2,......}; 用#define定义一星期七天,就要为每个整数定义一个别名 #define ...
- C语言的指针函数与函数指针
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992050 指 ...
- C语言程序设计 | 指针(二):常量指针和指针常量、数组参数和指针参数、函数指针数组
指针的进阶(二)目录: 常量指针和指针常量 数组参数和指针参数 函数指针数组 常量指针和指针常量 在我们日常中,经常会用到一个关键字const const是一个C语言(ANSI C)的关键字,具有着举 ...
- c语言指针自定义函数,c语言函数指针定义,指针函数和函数指针的区别
往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂.下面就由小编详细为大家介绍C语言中函数指针,指针函数和函数指针之间的区别. c语言指针函数定义: 函数指针是指向函数的指针变量. 因此&qu ...
- 【C语言进阶深度学习记录】三十二 函数指针与使用函数指针实现回调函数
回调函数是非常重要的概念 文章目录 1 函数的类型 2 函数指针 2.1 函数指针的使用 2.2 使用函数指针实现回调函数 3 总结 1 函数的类型 跟以前学数组的时候是一样的,C语言中的数组是有自己 ...
- typedef函数指针_C语言函数指针之回调函数
1 什么是回调函数? 首先什么是"回调"呢? 我的理解是:把一段可执行的代码像参数传递那样传给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调. 如果代码立即被执行就称为同 ...
最新文章
- 【转载】关于RabbitMQ的消息确认
- mysql数据库访问控制_一文总结MySQL数据库访问控制实现原理
- promise是什么?简单分析promise原理
- ORA-01157报错cannot identify/lock data file
- 【图像增强】基于matlab GUI暗通道图像去雾【含Matlab源码 835期】
- DB9串口线定义的解析
- c语言中.cpp英文全称,.cpp与.c的区别
- 计算机笔记--【Java设计模式】
- C/S架构的优点和缺点
- Django 修改时区时间
- 深入理解Spring----PostConstruct和PreDestroy
- android 动态壁纸 波浪效果,移动的波纹动态壁纸
- 关于css设置元素垂直水平居中的问题
- Telerik Silverlight 之Charting控件的使用
- 524. 愤怒的小鸟
- matlab 求留数,用matlab求留数
- excel 数据匹配、数据对应、建立数据映射关系(设置A对应1、B对应2)
- 自己动手构造编译系统:编译、汇编与链接
- 还记得曾经风起云涌的雨林木风了吗?
- 朝花夕拾教学课件PPT模板
热门文章
- python怎么把特殊字符打出来_python 过滤特殊字符 (emoji)
- 如何下载SHP矢量格式的等高线
- c语言奥林匹克大赛真题,全球首发!1-58届国际数学奥林匹克真题及解析大合集,350道必刷、必看、必收藏的巅峰之题与巧解妙解......
- Python二手车价格预测(一)—— 数据处理
- (22)Linux基础-系统磁盘配额quota
- OSG学习:用多通道(multiple passes)实现透明度
- 使用OfficeDeploymentTool工具离线下载安装Office
- excel改变列的位置
- Boost_Asio(4) strand
- 微信小程序全局音频播放,实现分析