在 C 语言中,指针函数指的是 “指针的函数” 或 “指针类型的函数”。
C 指针函数语法
我们都知道,函数的类型其实指的是返回值的类型。比如整型函数,指的是返回值是一个整型数据的函数。而指针函数,它的返回值是一个指针(地址)的函数。
我们要严格区分 “函数指针” 和 “指针函数”,这两个其实很好区别,只需要在名词中间加上 “的” 就可以了。
语法:
类型* 函数名(参数列表)C 指针函数示例
接下来,我们通过一个简单的例子来讲解一下 C 指针函数是如何使用的。
示例:使用 C 指针函数
#include <stdio.h>
int* max(int* a, int* b)
{
if (*a > *b)
{
return a;
}
return b;
}
int main(void)
{
int i = 10, j = 20, *p;
p = max(&i, &j);
printf("%d", *p);
return 0;
}运行结果如下。
20分析:
这里我们定义了一个 max() 函数,该函数的类型是 “int *”,也就是一个指针类型的函数。我们一般说函数的类型,其实指的是它返回值的类型,所以 max() 的返回值必须是一个 “int *” 类型。
对于求两个数的最大值,我们其实没必要使用指针函数的方式来实现,这个例子只是给小伙伴们展示一下指针函数是怎么使用的而已。指针函数还是很常见的,比如 <string.h> 中的 strcpy()、strcat() 这两个函数就是使用指针函数来实现的,感兴趣的小伙伴可以自行搜索一下它们的实现方式。
注意: 永远不要返回函数内部局部变量的地址,因为局部变量在函数结束后会被销毁,返回的指针将变成 “野指针”。
