从c中的函数返回字符串

Pra*_*att 3 c string

我很困惑我们如何能够从函数返回字符串.

char* someFunction()
{
  return "Hello, World"
}
Run Code Online (Sandbox Code Playgroud)

上面的return语句不应抛出"函数返回局部变量的地址",它与函数有什么不同:

char* newFunction()
{
  char temp[] = "Hello, World";
  return temp;
}
Run Code Online (Sandbox Code Playgroud)

实际上确实给出了上面提到的警告.

TJD*_*TJD 5

在第一种情况下,字符串始终存在于固定地址的常量只读存储器中.在第二种情况下,字符串被放置在堆栈本地,因此是临时的.