【发布时间】:2012-07-14 04:40:14
【问题描述】:
我是 C 初学者。我有一个程序如下:
int main()
{
char* func();
char *c;
c = func();
printf("%s", c);
}
char* func()
{
char *ptr = "OK";
return ptr;
}
众所周知,ptr是func()的局部变量,是一个指针。范围是本地的。
但是当ptr返回给调用者main时,它仍然有效,当c被打印时,它打印“OK”。
这怎么可能? ptr存储在哪个内存段中;堆栈还是堆?
【问题讨论】: