C语言函数指针详解
更新时间:2022年01月06日 08:43:35 作者:LuckyDog-Code
大家好,本篇文章主要讲的是C语言函数指针详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
前言
都知道c语言有各种类型的指针,但是大家很少接触函数指针,其实较粗略的说,C++的类中应该相当于C语言中含有函数指针的结构体
定义方法
对于一个函数如下:
<返回值类型> func (<参数1类型> <参数1>,...)
其函数指针的格式为
<返回值类型> (*<指针名>) (<参数1类型> <参数1>,...)
如下是实例:
定义如下一个函数指针
int main(int argc ,char* argv[]){
double (*a)(int n1,int n1) = NULL;
}
这里a的含义是指向参数为整型n1,整型n2,返回值为double的函数的指针,实操中可以省略参数名,只留下参数类型,如下:
double (*a)(int ,int ) = NULL;
而如下是指向返回值为指针类型的函数:
double* (*a)(double* ,int ) = foo;
赋值方法
函数名其实就是函数的地址,我们只需要将这个地址赋值给函数指针即可,如下
#include<stdio.h>
double* foo(double *a ,int b){
return a;
}
int main(int argc ,char* argv[]){
double* (*a)(double* ,int ) = foo;
}
通过调试,我们可以轻松看到foo和a的值:

用途
函数指针a可以作为另外一个函数b的变量,实现在函数b中运行函数a
函数指针可以作为结构体的一个域,就像C++中的类函数一样
总结
到此这篇关于C语言函数指针详解的文章就介绍到这了,更多相关C语言函数指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
这篇文章主要介绍了C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别的相关资料,需要的朋友可以参考下2017-04-04
C语言变长数组 struct中char data[0]的用法详解
下面小编就为大家带来一篇C语言变长数组 struct中char data[0]的用法详解。小编觉得挺不错的现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-01-01
C++ OpenCV单峰三角阈值法Thresh_Unimodal详解
本文主要介绍了适合当图像的直方图具有明显单峰特征时使用,结合了三角法的原理而设计的图像分割方法,感兴趣的小伙伴可以了解一下2021-12-12


最新评论