欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 学懂C语言(二十):弄懂C 指针函数和函数指针的区别

学懂C语言(二十):弄懂C 指针函数和函数指针的区别

2024/10/24 22:18:18 来源:https://blog.csdn.net/martian665/article/details/140642927  浏览:    关键词:学懂C语言(二十):弄懂C 指针函数和函数指针的区别

        在C语言中,"指针函数"和"函数指针"是两个容易混淆但含义截然不同的概念。它们分别代表了如何使用指针与函数相结合的两种不同方式。下面我将详细解释两者之间的区别。

1、指针函数(Pointer to Function)

        指针函数 是一个 返回指针函数。换句话说,指针函数是一个函数,它的返回值是一个指针类型

语法
返回类型* 函数名(参数列表);
示例
#include <stdio.h>
#include <stdlib.h>int* create_array(int size) {int *arr = (int*)malloc(size * sizeof(int));for (int i = 0; i < size; i++) {arr[i] = i + 1;}return arr;
}int main() {int *arr = create_array(5);for (int i = 0; i < 5; i++) {printf("%d ", arr[i]); // 输出1 2 3 4 5}free(arr); // 释放动态分配的内存return 0;
}

在这个示例中,create_array是一个指针函数,它返回一个指向int类型的指针。

2、函数指针(Function Pointer)

        函数指针 是一个 指向函数 指针。换句话说,函数指针是一个变量,它存储了函数的地址,可以通过这个指针调用函数

语法
#include <stdio.h>int add(int a, int b) {return a + b;
}int main() {int (*fp)(int, int); // 声明一个函数指针fp = add; // 将函数add的地址赋值给函数指针fpint result = fp(3, 4); // 通过函数指针调用add函数printf("%d\n", result); // 输出7return 0;
}

        在这个示例中,fp是一个函数指针,它指向add函数。通过fp可以调用add函数。

3、区别总结

  1. 指针函数

    • 是一个函数,返回一个指针类型。
    • 语法:返回类型* 函数名(参数列表);
    • 用途:常用于返回动态分配的内存或其他复杂数据结构的指针。
  2. 函数指针

    • 是一个指针,指向一个函数。
    • 语法:返回类型 (*指针变量名)(参数列表);
    • 用途:常用于回调函数、动态函数调用和函数数组等场景。

     通过以上解释,你应该能够清楚地区分C语言中的指针函数和函数指针。理解这两个概念对于编写灵活和高效的C程序非常重要。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com