3

可能重复:
返回指向文字(或常量)字符数组(字符串)的指针?

下面的代码是否正确?

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。

4

2 回答 2

6

代码很好。您正在返回一个指向字符串文字的指针,该字符串在您的程序期间有效。

来自 C89 标准:

3.1.4 字符串字面量

字符串文字具有静态存储持续时间和类型“char 数组”,并使用给定字符进行初始化。

于 2013-01-29T11:01:37.457 回答
5

对于您问题中的代码,您不会返回指向临时对象的指针。您正在返回一个指向字符串文字的指针,该字符串文字存储在代码或全局数据中。所有字符串文字的持续时间是程序的生命周期。

于 2013-01-29T11:02:52.843 回答