【发布时间】:2010-12-14 18:00:06
【问题描述】:
考虑这段代码:
char* foo(int myNum) {
char* StrArray[5] = {"TEST","ABC","XYZ","AA","BB"};
return StrArray[4];
}
当我将StrArray[4] 返回给调用者时,这应该有效吗?
由于数组是在堆栈上定义的,所以当调用者获取指针时,这部分内存已经超出范围。或者这段代码会起作用吗?
【问题讨论】:
-
我认为应该是“当我返回 StrArray[4] ..”
-
嗯取决于 - 它可能是 OP 的意思 StrArray[5]
-
这与您的问题无关,但在示例中您没有使用传递给 foo 的 myNum 参数。
-
这可行,但我建议不要这样做。在其他地方定义你的常量。虽然,这取决于您的情况,但有时这可能是一个不错的设计。稍微考虑一下。