函数指针与回调函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针与回调函数相关的知识,希望对你有一定的参考价值。

#include <stdio.h>


void function(void){
}
int function1(void){
    return 1;
}
int function2(int a){
    return a + 1;
}
void function3(int s){
}

int myMax(int a, int b){ if (a > b)return a; return b; }
int myAdd(int a, int b){ return a + b; }
int myMinus(int a, int b){ return a - b; }

/** 
    这个是本段程序的最精华部分!!!还得再默写一遍!!!
*/
int myFunction(int(*p)(int, int), int a, int b){
    return p(a, b);
}

int main(){

    void(*p)(void) = function;//这个声明跟下面这里必须严格一一对应
    int(*p1)(void) = function1; 
    int(*p2)(int) = function2;
    void(*p3)(int) = function3;
    printf("函数function的地址是:%p\n", p);
    printf("函数function的地址是:%p\n", function);//函数名跟数组名一样,都是用来代表当前这段内容的地址
    printf("函数function1的地址是:%p\n", p1);
    printf("函数function2的地址是:%p\n", p2);
    printf("函数function3的地址是:%p\n", p3);
    int result1 = p2(3);
    int result2 = function2(3);
    //那返回的结果当然也一样喽

    int r1 = myFunction(myMax,3, 4);
    int r2 = myFunction(myAdd,3, 4);
    int r3 = myFunction(myMinus,3, 4);
    printf("结果分别是:%d %d %d", r1, r2, r3);



    getchar();


}

 

以上是关于函数指针与回调函数的主要内容,如果未能解决你的问题,请参考以下文章

函数指针与回调函数

C语言函数指针之回调函数

函数指针与回调函数

c++异步回调函数引用传递空指针异常

函数指针与回调函数

如何快速理解函数指针与回调函数?