C语言函数指针

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C语言函数指针

LuckyDog-Code   2022-05-23 我要评论

前言

​ 都知道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++中的类函数一样

总结

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们