首页 > 编程笔记

C语言指针函数的使用

如果函数可以返回数值型、字符型等数据,也可以带回指针型的数据,这种函数称为返回指针值的函数,又称指针型函数。

C语言指针函数定义形式为:

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

例如,下式表示的含义是 max() 函数调用后返回值的数据类型是整型指针:

int *max(int *x, int *y);


请看下面示例。

【示例1】找出两个数组中的最大值(返回指针的函数的应用)。C语言代码如下:
#include <stdio.h>
#include <string.h>
/*返回指针的函数*/
int *max(int x[],int y[],int *p, int *c)
{
    int i;
    int *m=&x[0];
    for(i=1;i<=9;i++)
    {
        if(*m<x[i])
        {
            *m=x[i];
            *p=i;
            *c=1;
        }
    }
    for(i=0;i<=9;i++)
    {
        if(*m<y[i])
        {
            *m=y[i];
            *p=i;
            *c=2;
        }
    }
    return m;
}
int main(void)
{
    int c1[10]={1,2,3,4,5,6,7,8,9,0};
    int c2[10]={11,12,13,14,15,16,17,18,19,10};
    int n;
    int c;
    int *p;
    p=max(c1,c2,&n,&c);
    printf("两个数组中最大的是%d,在第%d个数组中位置是%d\n",*p,c,n);     /*max()函数返回最大值*/
    return 0;
}
运行结果:

两个数组中最大的是19,在第2个数组中位置是8

本例 max() 函数接收两个数组,求这两个数组中的最大值,并使用指针作为 max() 函数的返回值。函数只能有一个返回值,然而我们却偏偏希望返回给主函数 3 个值,还有两个值用来表示哪个数组哪个值最大,使用的方法称为引用。例如:

int n,c;
p=max(c1,c2,&n,&c);    /*参数&n就是引用,用来接收形参*p*/

在 max() 函数中,“*p=i;” 就是把 i 的值存放在指针变量 p 所指向的存储单元中,也就是存放在实参 n 中。

本例提出的引用方法可以给我们开发程序带来很大的便利,特别是需要调用函数返回多个返回值时,大家可以根据需要灵活使用。

优秀文章