易百教程

从函数返回指针

函数可以将内存位置作为值返回。将函数声明为指针类型,例如:

char *monster(void)

声明了monster()函数,它不需要参数,但返回一个指向char数组的指针 - 一个字符串值。

以下代码反转一个字符串,并将结果作为指针返回。

示例代码

#include <stdio.h> 

char *strrev(char *input);

int main()
{
    char string[64];

    printf("输入一些文本字符串: ");
    fgets(string, 62, stdin);
    puts(strrev(string));
    system("pause");
    return(0);
}

char *strrev(char *input)
{
    static char output[64];
    char *i, *o;

    i = input; o = output;

    while (*i++ != '\n')
        ;
    i--;

    while (i >= input)
        *o++ = *i--;
    *o = '\0';

    return(output);
}

执行上面示例代码,得到以下结果:

输入一些文本字符串: this is a text from yiibai.com

moc.iabiiy morf txet a si siht

从原型strrev()函数可以看到它返回一个指针,一个char数组或字符串的地址。
strrev()函数需要一个char指针作为其参数。输出缓冲区已创建且它是静态的,因此在返回函数时它不会消失。第一个while循环在输入字符串的末尾找到换行符。i变量一次遍历字符串一个字符。