【发布时间】:2013-01-12 22:21:02
【问题描述】:
可能重复:
returning a pointer to a literal (or constant) character array (string)?
下面的代码正确吗?
const char* state2Str(enum State state)
{
switch (state)
{
case stateStopped: return "START";
case stateRunning: return "RUNNING";
default: return "UNKNOWN";
}
}
printf("State is: %s\n", state2Str(stateRunning));
让我担心的是该函数返回一个指向临时对象的指针。这种返回值的生命周期是多少?语言是 C89。
【问题讨论】:
-
字符串文字不是临时对象。它总是在记忆中。
标签: c pointers return temporary