#include<stdio.h>
char *getstr1()
{
char s[]="str1";
return s;
}
char *getstr2()
{
char *s="str2";
return s;
}
void getstr3(char *s)
{
s="str3";
return;
}
int main()
{
char *s1,*s2,*s3;
s1=getstr1();
s2=getstr2();
getstr3(s3);
printf("str1:%s\r\n",s1);
printf("str2:%s\r\n",s2);
printf("str3:%s\r\n",s3);
}
程序报错
warning: address of local variable ‘s’ returned [-Wreturn-local-addr]
char s[]=“str1”;
原因:在函数内部定义变量,并返回
这样函数内部定义的变量在函数结束时被释放掉,所以返回是找不到的。
改为
static char s[]=“str1”;就不会了,警告消除。