在C语言中,指针函数和函数指针是容易混淆但完全不同的概念:
1. 指针函数(Pointer Function)
- 本质:是一个返回指针的函数。
- 定义:函数的返回值类型是指针类型(如int*、char*等)。
- 示例:int* func(int a, int b) { int* p = (int*)malloc(sizeof(int)); *p = a + b; return p; // 返回一个整型指针 }- func是一个函数,返回- int*类型的指针。
 
2. 函数指针(Function Pointer)
- 本质:是一个指向函数的 - 指针变量。
- 定义:指针指向的是函数(存储函数的入口地址),通过它可以调用函数。 
- 示例: - int add(int a, int b) { return a + b; } int (*pFunc)(int, int); // 定义函数指针 pFunc = add; // 指向add函数 int result = pFunc(2, 3); // 通过指针调用函数(result = 5)- pFunc是一个指针,指向接受两个- int参数并返回- int的函数。
 
关键区别:
| 特性 | 指针函数 | 函数指针 | 
|---|---|---|
| 本质 | 函数(返回指针) | 指针(指向函数) | 
| 定义形式 ★★★ | int* func(...) | int (*pFunc)(...) | 
| 用途 | 动态内存分配、返回地址数据 | 回调函数、灵活调用不同函数 | 
记忆技巧:
- 指针函数:名字是函数,返回值是指针(*靠近类型,如int* func())。
- 函数指针:名字是指针,指向函数(*靠近变量名,如int (*pFunc)())。
常见应用场景:
- 指针函数:返回动态分配的字符串或数组(如char* strcpy())。
- 函数指针:实现回调机制(如qsort库函数的比较函数)。
理解清楚两者的差异,能避免在复杂代码(如函数指针数组、回调函数)中混淆。
 我的书签
 我的书签
                                 添加书签
 添加书签 移除书签
 移除书签