【发布时间】:2013-05-21 21:50:31
【问题描述】:
char* f()
{
char s[100];
//....function body code
return s;
}
为什么不能这样写?
【问题讨论】:
-
因为程序跑了!
-
有人请找出骗子。
-
嘿!让我们有礼貌,现在。
-
当您调用一个函数时,在该函数“内部”声明的所有变量都会在调用该函数时分配的一块“堆栈”存储空间中创建。当您返回时,该存储被释放,以供其他功能重用。要理解的另一件事是,在 C 中,数组是二等公民,因此您的
return s只会返回一个指向数组 s 的 指针。 s 的实际存储仍然分配在“堆栈框架”中......直到您返回,此时它会“噗”地一声。