c++ - 静态 char* 的数组

标签 c++ c arrays

我想知道 C++ 是否正确:

static char *arrayExample[]  = 
{
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h"
};

最佳答案

I would like to know if is correct write that in C++

static char *arrayExample[]  = 
{
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h"
};

即使您不添加 const 修饰符,它也会编译吗?是的,但它具有误导性。字符串字面量存储在内存区,源代码的所有字符串字面量都保存在内存区中,一个接一个。这意味着您不应该弄乱它(在 PC 中不会发生这种情况。但它可以映射到 ROM 内存)。

所以,基本上是正确的。但是,这个文字数组并不意味着要修改,因此您最好将其重写为:

static const char *arrayExample[]  = 
{
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h"
};

您已将其声明为static:这意味着它只会在其自己的翻译单元(即创建它的 cpp 文件)中可见。如果那是您的意图(您不打算在翻译单元之间共享它),那完全没问题。

希望这对您有所帮助。

关于c++ - 静态 char* 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16830489/

相关文章:

c++ - 相对路径问题 - 一个 dir up

objective-c - 将缓冲区的内容存储在 NSString 中

c++ - 使用OpenGL均匀分布虚线?

objective-c - C 和 Objective-C 中指针的区别

c++ - unique_ptr<T> 成员的模板化通用 setter

c++ - 奇怪的着色器损坏

c++ - 如果返回图像,我需要 cvReleaseImage 吗?

c - 如何实现缓冲区溢出

Java TCP Socket发送字节数组

来自 2 个来源的 javascript 键值数组