代码:
char *test(const char s[])
{
char tstr[50]={'/0'};
unsigned int i,k=0;
for(i=0;i<strlen(s);i++)
{
if(s[i]!='')
tstr[k++]=s[i];
}
return tstr;
}
错误:返回了一个局部地址。
tstr是在函数中声明的一个局部指针,当函数结束后,tstr即被释放,所以不能被作为返回值。
可以对程序做如下修改:
1)使用动态分配内存
char *tstr = calloc(strlen(s),sizeof(char));
tstr指向动态分配的内存,在函数结束后不会被释放,需要程序员手动释放。
2)使用静态变量
static char tstr[50] = {'/0'};
tstr存储在全局数据区,在函数结束后不会被释放,在程序结束后自动释放。