前言
都知道c语言有各种类型的指针,但是大家很少接触函数指针,其实较粗略的说,C++的类中应该相当于C语言中含有函数指针的结构体
定义方法
对于一个函数如下:
1
|
<返回值类型> func (<参数1类型> <参数1>,...) |
其函数指针的格式为
1
|
<返回值类型> (*<指针名>) (<参数1类型> <参数1>,...) |
如下是实例:
定义如下一个函数指针
1
2
3
|
int main( int argc , char * argv[]){ double (*a)( int n1, int n1) = NULL; } |
这里a的含义是指向参数为整型n1,整型n2,返回值为double的函数的指针,实操中可以省略参数名,只留下参数类型,如下:
1
|
double (*a)( int , int ) = NULL; |
而如下是指向返回值为指针类型的函数:
1
|
double * (*a)( double * , int ) = foo; |
赋值方法
函数名其实就是函数的地址,我们只需要将这个地址赋值给函数指针即可,如下
1
2
3
4
5
6
7
8
9
|
#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语言函数指针内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_50852962/article/details/122331134