• 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”数组的不同元素来调用不同的函数,并输出相应的结果

  • 相关阅读:
    vue快速学习03、ant-design
    PyFluent入门之旅(2)基本操作
    前端部署iis后axios跨域请求问题
    c++调用Lua(table嵌套写法)
    【面试必刷101】动态规划1
    案例驱动,手把手教你学PyTorch(一)
    MarkDown语法超详细讲解
    软考-架构篇-架构模型
    如何控制Spring bean的生命周期
    uboot添加自定义命令
  • 原文地址:https://blog.csdn.net/techenliu/article/details/133819559