• C语言函数指针简介


    C语言函数指针简介


    在C语言中,函数指针是指向函数的指针变量。函数指针可以用来调用该指针所指向的函数,或者将函数作为参数传递给其他函数。以下是一些C语言函数指针的常见用法:

    1)指向函数的指针变量
    指针变量可以存储函数的地址,通过使用“&”操作符可以得到函数的地址。例如:

    int add(int a, int b) {  
        return a + b;  
    }  
      
    int main() {  
        int (*fp)(int, int);  // 声明一个函数指针fp  
        fp = &add;             // 将fp指向add函数  
        int result = fp(1, 2);   // 通过fp调用add函数  
        printf("%d\n", result);  // 输出结果3  
        return 0;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在上面的例子中,我们声明了一个名为“fp”的函数指针,它指向一个带有两个整数参数并返回一个整数的函数。然后我们将“fp”指向了“add”函数,并通过“fp”调用该函数。

    2)回调函数
    回调函数是指在使用函数指针时,将一个函数作为参数传递给另一个函数,或者将一个函数作为另一个函数的返回值。例如:

    void myfunc(int data, int (*callback)(int)) {  
        printf("Get data: %d\n", data);  
        int result = callback(data);  
        printf("Callback result: %d\n", result);  
    }  
      
    int add(int a) {  
        return a + 1;  
    }  
      
    int main() {  
        myfunc(100, add);        // 将add函数作为回调函数传递给myfunc函数  
        return 0;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在上面的例子中,我们定义了一个名为“myfunc”的函数,它接受一个整数参数和一个回调函数。在“myfunc”函数内部,我们调用回调函数并传递参数,并输出回调函数的返回值。在“main”函数中,我们将“add”函数作为回调函数传递给“myfunc”函数。

    3)函数指针数组
    可以定义一个包含函数指针的数组,每个元素都是一个指向不同函数的指针。例如:

    int add(int a, int b) {  
        return a + b;  
    }  
      
    int subtract(int a, int b) {  
        return a - b;  
    }  
      
    int main() {  
        int (*fp[])(int, int) = {add, subtract};  // 定义一个函数指针数组fp,包含两个指向函数的指针  
        int result = fp[0](1, 2);                  // 通过fp数组的第一个元素调用add函数  
        printf("%d\n", result);                   // 输出结果3  
        result = fp[1](3, 4);                      // 通过fp数组的第二个元素调用subtract函数  
        printf("%d\n", result);                   // 输出结果1  
        return 0;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在上面的例子中,我们定义了一个名为“fp”的函数指针数组,它包含两个指向不同函数的指针。我们通过访问“fp”数组的不同元素来调用不同的函数,并输出相应的结果

  • 相关阅读:
    高等教育学:教育目的与教育制度
    基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)
    【微信小程序】微信Web开发者工具下载及安装
    LeetCode每日一题(218. The Skyline Problem)
    半正定矩阵的对角元素不小于该矩阵的最小特征值
    【学习笔记】RabbitMQ03:DLX 死信交换机 死信队列 以及示例代码
    RabbitMQ之单机多实例部署
    [Linux](1)Linux入门环境搭建|云服务器|Xshell远程登陆|Xshell复制粘贴|用户管理
    我们来用Unity做个2D像素boss战
    CSS 预处理器的 13 种风格
  • 原文地址:https://blog.csdn.net/techenliu/article/details/133819559