美文网首页
函数指针

函数指针

作者: 贝克街的猫大哥呀 | 来源:发表于2017-08-20 10:57 被阅读0次

先给个定义

就是函数的....指针-- 这他妈不废话吗--- 

就是函数的内存地址!!例如


 //先定义一个函数,显示一个弹窗

void showMessage(char* title, char* message){

         MessageBox(0,message,title,0);

}

void main(){

         void(*fun_p)(char* title, char* message) = showMessage;

         fun_p("标题","测试");

         system("pause");

}


关键代码是:void(*fun_p)(char* title, char* message) = showMessage;

可以看出,这里直接将 showMessage这个函数的地址赋值给了fun_p 这个定义的函数指针

为什么这里不需要 &showMessage 这样来存地址呢? 其实这样写也行,不写&也行,都是表示的方法的内存地址

再来看看函数指针是怎么定义的,void表示函数指针的返回值 ,第一个括号里是方法名,第二个括号里是参数名!

这样调用 fun_p("标题","测试"); 就跟调用showMessage方法一样。

关键问题来了!函数指针有什么用,看下面的示例:



int mix(int a,int b){

     return a - b;

}

int add(int a,int b){

     return a + b;

}

void msg(int(*fun_p)(int a,int b),int m,int n){

     int a=fun_p(m, n);

    printf("最终输出的值:%d", a);

}

void main(){

   msg(add,1,2);

   msg(mix, 1, 2);

   system("pause");

}


msg方法为关键,里面的参数就是一个函数指针。 这个参数里面,定义了返回值,以及参数。在main方法中,符合这个定义的函数,都可以当成函数指针传进去!! 

看到msg(add,1,2); 这个方法,将add方法传入,不是传指针吗,怎么直接传了add呢。 这跟上面的问题是一样的。&add也可以,直接输add也行,因为add代表的,就是它本身的内存地址!

现在就很明显了,这个作用,就相当于JAVA中的,回调!但比JAVA的回调简单多了,因为这里,相当于可以直接传一个函数进去!

相关文章

  • 函数和指针

    函数指针: 指向函数的指针(是指针)指针函数:返回值是指针的函数(是函数)

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • 指针

    一. 指针指向的是对象的地址//函数指针:指针指向函数//指针函数:函数返回指针 二.

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C语言基础知识点

    函数指针与回调函数 1、函数指针:函数指针是指向函数的指针变量,以下实例声明了函数指针变量 p,指向函数 max:...

  • NDK启航篇——C语言基础(函数指针)

    昨天介绍了指针类型、空指针、指针运算,今天来写一下函数指针 函数指针 函数指针的定义:函数的返回值类型(函数指针的...

  • C语言基础---函数指针和回调函数

    版权声明:本文为小斑马伟原创文章,转载请注明出处!函数指针:函数指针 是指向函数的指针。指针函数:指针函数 函数...

  • Redis

    1.指针函数与函数指针 指针函数本质是指针,其返回值是指针。如 float *fun(); 函数指针,本质是指针。...

  • C++:函数指针 & 返回函数指针的函数

    函数指针 & 返回函数指针的函数 一、函数指针的声明和使用 声明一个函数指针,给它赋值并调用它指向的函数 函数指针...

  • 函数指针

    一.函数指针,指针指向函数 二.函数指针做参数

网友评论

      本文标题:函数指针

      本文链接:https://www.haomeiwen.com/subject/mhtfdxtx.html