读书人

求大神解释为何输出乱码而不是“hel

发布时间: 2013-09-29 11:07:08 作者: rapoo

求大神解释为什么输出乱码,而不是“hello”和乱码???

#include <iostream>
using namespace std;
char* get_str()
{
char str[] = {"hello"};
return str;
}
char * get_str2()
{
char str[] = {"hello"};
return str;
}
int main()
{
char* p = get_str();
printf("%s\n",p);
char*p2 = get_str2();
printf("%s\n",p2);
system("pause");
return 0;
}

[解决办法]
char str[] = {"hello"};是局部变量,在栈上分配的内存空间。函数运行结束之后,栈的内存就释放了,而你返回了一个指针,指向一个已经被释放了内存的地址空间,肯定乱码了

读书人网 >C++

热点推荐