函数可以将内存位置作为值返回。将函数声明为指针类型,例如:
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
变量一次遍历字符串一个字符。