【发布时间】:2017-01-14 23:58:11
【问题描述】:
我有这个功能:
char* return_string(){
char buffer[] = "Hi world!";
return buffer;
}
bool test08()
{
char compare[] = "Hi world!";
int result = strcmp(compare,return_string());
if (result == 0) return true;
return false;
}
int main()
{
if(test08) printf("\nTRUE");
else printf("\nFALSE");
}
为什么这段代码在c++ Shell 中运行,而在代码块 v. 13.12 中却没有(分段错误);如果我将我的 char buffer[]= 声明更改为 char *buffer=; 它将起作用我是 C++ 的初学者(很容易知道)所以请清楚......
【问题讨论】:
-
这是未定义的行为。您正在返回一个指向局部变量的指针。
-
不要发送无关语言的垃圾标签。
标签: c++ string buffer string-literals