我是 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;堆栈还是堆?