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