既然指针可以作为函数的参数传给函数,那么也一定可以作为函数的返回值,返回给调用函数。
比如,自己写一个返回两者之中较长字符串的函数的示例代码:
#include<stdio.h>
#include<string.h>
char *compare(char *str1,char *str2){
if(strlen(str1)>strlen(str2)){
return str1;
}else if(strlen(str1)<strlen(str2)){
return str2;
}else{
char *r = "一样长";
return r;
}
}
void main(){
char *str1 = "123";
char *str2 = "1234";
char *r=compare(str1,str2);
printf("%s\n",r);
}
打印结果:1234
用指针作为函数返回值时需要注意的一点是,函数运行结束后会销毁在它内部定义的所有局部数据,包括局部变量、局部数组和形式参数等,函数返回的指针请尽量不要指向这些临时数据,谁都不能保证这些临时的数据一直有效,它们在后续使用过程中可能会引发运行时错误。