C语言中的指针型函数值

来源:互联网 发布:看灌篮高手漫画软件 编辑:程序博客网 时间:2024/06/05 22:56
C语言中的指针型函数值
本文节选自《21天学通C语言》一书

    函数的函数返回值也可以是指针型的数据,即地址。返回该类型值时,执行机制与返回其他类型完全相同。含有指针型函数值的函数的声明一般为:
数据类型 * 函数名(形参列表);
    其中,数据类型和指针操作符组成指针类型。例如:
    int * max(int a, int b, int c);
    此max函数中的return语句必须返回一个变量的地址或一个指针变量的值。范例14-6演示了如何使用指针变量作为函数返回值。
【范例14-6】使用指针变量作为函数返回值,实现方法如示例代码14-6所示。
示例代码14-6
01    #include <stdio.h>
02    
03    /* 求最大数的地址 */
04    int * max(int * a, int * b, int * c) {
05        int * p = NULL;
06    
07        if (*a > *b)                                /* 如果a指向值较大,将p设为a */
08            p = a;
09        else                                        /* 如果b指向值较大,将p设为b */
10            p = b;
11    
12        if (*p < *c)                                /* 如果c指向值较大,将p设为c */
13            p = c;
14    
15        return p;
16    }
17    
18    int main(void) {
19        int a = 0;                                /* 定义并初始化a */
20        int b = 0;                                /* 定义并初始化b */
21        int c = 0;                                 /* 定义并初始化c */
22        int * p = NULL;
23    
24        /* 从标准输入读取个数值赋值给a、b和c */
25        printf("Please input three integers:");
26        scanf("%d", &a);                            /* 读入a */
27        scanf("%d", &b);                            /* 读入b */
28        scanf("%d", &c);                            /* 读入c */
29    
30        /* 求a,b和c的最大值 */
31        p = max(&a, &b, &c);                        /* 调用max函数 */
32        printf("The max. is %d./n", *p);            /* 输出函数执行结果 */
33    
34        return 0;
35    }
【运行结果】程序运行后,输入三个数,“531”,得到结果。
【代码解析】本程序实现了一个求最大数地址的max函数。该函数以指针类型变量作为函数值,形参为三个int型指针变量。在函数中将三个指针指向的值做比较并找到最大值,将指向该值的指针返回。
在max函数中:
    第7~10行,先比较a和b指向的值,将p赋值为指向的值较大的指针变量。
    第12~13行,如果p指向的变量小于c指向的变量,将p赋值为c的值。

原创粉丝点击