函数指针

2020-04-23  本文已影响0人  KeHaoo

以前在学c的时候对于函数指针的概念没有怎么仔细看,现在回来温习一下,做个记录以后方便回看

因为太简单了,直接把代码pull在这

int main(){
    int choose;
    printf("1.传统调用函数\n");
    printf("2.利用函数指针调用\n");
    printf("3.函数指针作为参数\n");
    printf("please input your choose:\n");
    scanf("%d", &choose);
    switch (choose)
    {
    case 1:
        funNormal();
        break;
    case 2:
        funPointer();
        break;
    case 3:
        funPointerPara(max);
        break;
    default:
        break;
    }
}

void funPointerPara(int(*p)(int, int)){
    printf("函数指针作为参数\n");

    int a, b, c;
    printf("please input two number\n");
    scanf("%d%d", &a, &b);
    printf("a = %d,b= %d\n", a, b);
    c = (*p)(a, b);
    printf("max is %d\n", c);
}

void funPointer(){
    printf("利用函数指针调用\n");

    int a, b, c;
    printf("please input two number\n");
    scanf("%d%d", &a, &b);
    printf("a = %d,b= %d\n", a, b);
    //利用函数指针调用
    int(*p)(int, int);//定义函数指针
    p = max;
    c = (*p)(a, b);
    printf("max is %d\n", c);
}

void funNormal(){
    printf("传统调用函数\n");

    int a, b, c;
    printf("please input two number\n");
    scanf("%d%d", &a, &b);
    printf("a = %d,b= %d\n", a, b);
    //传统调用函数
    c = max(a, b);
    printf("max is %d\n", c);
}

int max(int a, int b){
    return a > b ? a : b;
}
两种调用方法
#include <stdlib.h>  
#include <stdio.h>

int max(int a,int b){
    return a > b ? a : b;
}

int min(int a, int b){
    return a < b ? a : b;
}

int fun1(int a, int b, int(*p)(int a, int b)){
    return (*p)(a, b);
}

int fun2(int a, int b, int(*p)(int a, int b)){
    return p(a, b);
}

int main(){
    int result1 = fun1(7, 8, max);
    int result2 = fun2(7, 8, max);
    printf("result1: %d\n", result1);
    printf("result1: %d\n", result2);
}
上一篇 下一篇

猜你喜欢

热点阅读