c++ - 将 char* 返回为字符串文字

标签 c++

你能做到吗?

char* func()
{
   char * c = "String";
   return c;
}

这里的“String”是编译器全局分配的数据吗?

最佳答案

你可以做到。但更正确的说法是:

const char* func(){
  return "String";
}

C++ 规范规定字符串字面量被赋予静态存储持续时间。我无法链接到它,因为在线的 c++ 规范版本很少。 本页 const correctness是我能找到的最佳引用。

ISO/IEC 14882(编程语言 - C++)第 2.13.4 节说:

  1. 字符串字面量是一个字符序列(如 2.13.2 中所定义),用双引号括起来,可选 以字母 L 开头,如“...”或 L“...”。不以 L 开头的字符串文字是普通的 字符串文字,也称为窄字符串文字。一个普通的字符串字面量的类型是“array of n const char” 和静态存储持续时间 (3.7),其中 n 是如下定义的字符串的大小,并且是 用给定的字符初始化。 ...

  2. 是否所有字符串文字都是不同的(即,存储在非重叠对象中)是实现定义的。 尝试修改字符串文字的效果是不确定的。

关于c++ - 将 char* 返回为字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556976/

相关文章:

c++ - 如何使用数组作为 map 值?

c++ - 用泰勒法 C++ 计算圆周率

c++ - 伺服转换应该具有什么抽象级别?

c++ - 在 OSX 上运行 Allegro 5 时找不到主要功能

c++ - 在main()外调用一个函数

c++ - Qt3D,使用 QPickEvent 获取对象

c++ std::stringstream 给我奇怪的行为

c++ - 小四元数相机错误? (在 Z 轴上略微旋转)

c++ - 用tellg()判断文件长度,最终结果为-1

c++ - 函数无缘无故地使参数无效