char *test1(void)
{
char b[10] = "abcde";
return b;
}
char *test1_ver2(void)
{
static char b[10] = "abcde";
return b;
}
char *test2(void)
{
char c[10] = "abcde";
char *pStr = c;
return pStr;
}
char *test3(void)
{
char *c = "abcdef";
return c;
}
test1不能运行,甚至可能无法编译通过;因为char b[10] 是局部变量,其存放在栈上,在函数执行完成就会被释放。而返回它存放的地址,此时已经是可能是个非法地址。
test1_v