学科分类
目录
C语言

指针函数

函数的返回值可以是整型值、浮点类型值、字符类型值等,在C语言中还允许一个函数的返回值是一个指针(地址),这种返回指针的函数称为指针函数。

指针函数的声明格式如下所示:

基类型* 函数名(参数列表);

从上面的声明格式可以看出,函数名之前加了符号“*”表明函数的返回值是一个指针,基类型表示了返回的指针所指向的数据类型。

下面通过一段代码演示如何定义指针函数。

int* func(int x, int y)
{
  /* 函数体 */
}

上面的代码定义了func()函数,该函数是一个返回指针的函数,它返回的指针指向一个整型变量。指针函数的应用非常广泛,如前面学习的内存申请函数,这些函数的返回值均为指针类型。

下面通过一个案例来了解指针函数如何使用,该案例要求计算一个int类型数组的最大值,并返回其地址,案例具体实现如例1所示。

例1 ptrfunc.c

 1    #include <stdio.h>
 2    int * func(int * arr, int size)
 3    {
 4        int * p = arr;
 5        for (int i = 0; i < size; i++)    //通过for循环查找数组中最大值
 6        {
 7             if (*(arr + i) > *p)        //判断找到的元素是否是最大值
 8             {
 9                 p = arr + i;            //移动指针
 10             }
 11         }
 12         return p;                        //将最大元素的地址返回
 13    }
 14    int main()
 15    {
 16         int arr[5] = { 9, 8, 3, 5, 2 };
 17         int * p = func(arr, 5);            //调用func()函数
 18         printf("数组中最大的元素是 %d,其地址是 %p\n", *p, p);
 19        return 0;
 20    }

例1的运行结果如图1所示。

图1 例1运行结果

在例1中,第2-13行代码定义了func()函数,该函数的功能是从数组中找出最大的元素,返回该元素的地址;第16行代码定义并初始化了数组arr;第17行代码定义了指针变量p,并将func()函数的返回值赋给p;第18行代码调用printf()函数输出数组最大元素及其地址。从图7-28可以看出,数组arr中最大的元素的值及其地址都被打印出来了,说明函数可以用指针作为其返回值。

点击此处
隐藏目录