zoukankan      html  css  js  c++  java
  • C语言基础语法之指向函数的指针

    指针是C语言的精髓,对于初学者来讲,指针是C语言语法学习中比较难的知识点,而这里面指向函数的指针更是不太容易理解。

    下面给大家讲下怎样学习理解C语言中指向函数的指针及编程方法和使用例子。

    注意:这是一篇关于C语言编程的基础语法内容,C语言大神请绕过。

    基本概念

    首先,先不要把指向函数的指针认为太难了,它和普通的指针区别也不是太大,只是定义形式上有所区别。

    比如,对于一个指向整形的普通指针,定义形式如下:

    int *p;

    在定义中,指针变量的名称是p,符号“*”说明了p是一个指针,int说明这个指针指向的是整形变量。

    那么,如果我们定义一个指向函数的指针,假设变量名称为p,比如它指向这样的一个函数,这个函数需要两个整形参数,其返回值也是整形参数,其定义如下:

    int (*p)(int, int);

    对这个定义分解一下,其中,p是变量的名称,符号“*”说明了p是一个指针,由于这个指针指向的是一个函数,所以在定义中必须体现函数的输入输出参数信息,那么最前面的int指的就是函数的返回值为int类型,后面的(int, int)则定义了该函数需要两个整形的输入参数。另外,必须将“*”与“p”必须用括号写成(*p)的形式,否则,由于括号的优先级大于*的优先级,去掉括号的话就成为另外一种意思了。

    这样对比着理解,指向函数的指针似乎与普通指针区别也不是太大。

    指向函数的指针编程例子

    下面通过一个例子演示指向函数的指针的使用方法。

    该例子的功能是,对于一个输入的一维数组,定义三个函数findMax、findMin和getAvg,分别实现查找该数组的最大值、最小值及计算该数组的平均值,这三个函数的输入输出参数完全相同。定义一个fun函数,在该函数的参数中,需要一个指针变量作参数,这个指针能够指向上面的三个函数。在主程序中,调用fun函数,根据传入不同的p值实现对输入的一维数组作不同的处理功能。

    下面先看下几部分的实现代码吧。

    1、findMax、findMin和getAvg代码实现

    这三个函数对一维数组x,分别作求最大值、最小值及平均值的处理,并将其结果返回。C语言代码如下:

    这三个函数比较简单,函数原型完全一样,输入参数为一个指向double的指针x及x的元素个数n,输出参数也就是返回值是一个double型的数值。

    2、fun函数的代码实现

    该函数输入参数为3个,前两个为指向double的指针x及x的元素个数n,第三个为一个指向函数的指针类型,这个指针能够指向上面的三个函数。C语言代码如下:

    那么,在主程序中可以调用该函数,只要输入不同的p值,就可以对输入的一维数组作不同的处理运算。

    3、主程序测试代码

    主程序C语言测试代码如下:

    第43-44行定义了一个包含5个元素的一维数组x及存储数据处理结果的变量max、min及avg。

    第46-48行,调用fun函数,将函数findMax、findMin和getAvg的名称作为参数传入到该函数中,在控制台上输出其处理运算结果。

    其运行界面如下图所示:

    可见,在这个例子中已经成功的使用了指向函数的指针作为参数,并得到了正确的运行结果。

    总结

    指向函数的指针,理解其定义形式,掌握其基本用法,似乎也不是太难了。

    传送门:C语言编程:手把手以实例跟我学基础语法之指向函数的指针 

    https://baijiahao.baidu.com/s?id=1616897994801163285&wfr=spider&for=pc

  • 相关阅读:
    06 PIE-Hyp图像修复
    在IIS中部署.NET Core WebApi程序
    深入学习ASP.NETCORE免费视频课程
    推荐设计10大接单平台
    Mysql—安装和使用(1)
    .Net WebApi接口之Swagger配置请求头apiKey验证
    .Net WebApi接口之Swagger设置让控制器上的注释显示
    执行dotnet *.dll启动项目,修改环境变量
    MySql下载及安装(Windows环境 )
    dev的grid封装组件,拖拽初始化属性
  • 原文地址:https://www.cnblogs.com/tongongV/p/10989923.html
Copyright © 2011-2022 走看看