C语言什么是指向函数的指针?

ops/2024/10/22 23:42:41/

一、问题

        指针可以指向普通数值、数组,还可以指向指针,那么可以指向函数吗?答案是可以, 那么它是什么样的呢?

二、解答

        ⼀个函数在编译时被分配⼀个⼊⼜地址,这个地址就称为函数的指针。所以,可以使⽤指针变量指向⼀个函数,然后通过该指针变量调⽤这个函数。 指向函数的指针变量的⼀般形式为:

数据类型(*指针变量名)();

这⾥的数据类型是指函数返回值的类型。

例如:

int (*pmin)();

        (*p)()表示定义⼀个指向函数的指针变量,它⽤来存放函数的⼊口地址。在程序设计过程中,将⼀个函数地址赋给它,它就指向那个函数。函数指针变量赋值可按如下⽅式进⾏书写:

p=min;

        可见,在赋值时只给出函数名称即可,不必给出函数的参数。 在使⽤函数指针变量调⽤函数时,要写出函数的参数。例如:

m = (*p)(a,b);

        下⾯来看⼀个应⽤的实例:⽐较⼤⼩。代码如下。

#include <stdio.h>
int min(int a, int b)
{if (a < b)return a;elsereturn b;
}
int main()
{int (*pmin)();int a, b, m;pmin = min;printf("请输入两个数:\n");scanf("%d%d", &a, &b);m = pmin(a, b);printf("min=%d", m);return 0;
}

        在 mian()函数中实现定义指向函数的指针变量,并使次函数指针变量指向 min()函数, 将得到的结果输出在窗体上。

三、总结

        对于函数指针要注意以下两点:

(1)不能对函数指针变量进⾏算术运算。

(2)在函数调⽤时,不要忘记指针变量名两边的括号。


http://www.ppmy.cn/ops/33187.html

相关文章

图像识别 之 目标检测

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

巧用 TiCDC Syncpiont 构建银行实时交易和准实时计算一体化架构

本文阐述了某商业银行如何利用 TiCDC Syncpoint 功能&#xff0c;在 TiDB 平台上构建一个既能处理实时交易又能进行准实时计算的一体化架构&#xff0c;用以优化其零售资格业务系统的实践。通过迁移到 TiDB 并巧妙应用 Syncpoint&#xff0c;该银行成功解决了原有多个 MySQL 集…

Vue项目解决自定义el-dialog的border-radius无效的问题

一、问题产生的原因 自定义el-dialog的border-radius无效的原因其实就是因为层级的问题&#xff0c; f12打开样式检查就能发现组件自身已经全局定义了一个圆角变量 二、解决方法 和上面一样&#xff0c;在项目全局也就是在app.vue中定义全局变量 并且需要给!important&a…

上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;嵌入式应用一般都是为了某一个特定应用而存在的。也就是说&#xff0c;和pc不同&#xff0c;这个嵌入式板子一般都是为了解…

课题学习(二十三)---三轴MEMS加速度计芯片ADXL372

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。 一、基础配置 测量范围-200g-200g&#xff0c;分辨率为12位&#xff0c; V s 、 V D D I / O V_s、V_{DDI/O} Vs​、VDDI/O​范围为1.6V-3.5V 1.1 引脚配…

python使用opencv对图像的基本操作(3)

17.颜色空间的转换 17.1.rgb图像转gray图像 from skimage import io,color img io.imread(lbxx.jpg) img_gray color.rgb2gray(img) #将rgb图像转换成gray图像 io.imshow(img_gray)运行结果&#xff1a; 17.2.rgb图像转hsv图像 from skimage import io,color img io.im…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic&#xff0c;python都在/usr/bin中&#xff0c;一共是两个版本的python&#xff0c;一个是python3.8&#xff0c;另一个是python2.7。 问题发现 当安装anaconda后&#xff0c;并且将anaconda的bin目录加入到系统环境中时候&#xff0c;…

计算机网络实验二:交换机的基本配置与操作

实验二:交换机的基本配置与操作 一、实验要求 (1)掌握windows网络参数的设置(TCP/IP协议的设置); (2)掌握交换机命令行各种操作模式的区别,以及模式之间的切换; (3)掌握交换机的全局的基本配置; (4)掌握交换机端口的常用配置参数; (5)查看交换机系统和…