我是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
存储在哪个内存段中:堆栈还是堆?