函数栈返回的问题,还需要高手给解释一下。
刚才看了一个帖子,名称:一份C/C++实习生笔试试卷(基础部分),大家讨论一下答案吧!
连接:http://topic.csdn.net/u/20090211/16/773219a4-bb84-4702-8669-28fef466af62.html
对于下面的程序,其中很多人认为函数返回后堆栈返回,所以printf(str)输出结果未知。实际的输出结果确实是乱码,但是我在printf(str)这一行设置了断点(VC环境),结果发现str的内容居然是Welcome to AMOI,既然栈已经返回,那么里面不应该有数据才对(或者说是数据未知才对),为什么数据是已经返回的栈中的变量内容呢?
char* GetMemory(void)
{
char p[] = "Welcome to AMOI";
return p;
}
void main(void)
{
char* str = NULL;
str = GetMemory();
printf(str);
}
运行main函数的结果如何?你觉得该段代码是否存在什么问题?