C语言函数指针
LuckyDog-Code 人气:0前言
都知道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++中的类函数一样
总结
加载全部内容