c++ - 编程实践 char * 指向常量的指针或指向常量的数组

标签 c++ constants

我知道下面是不好的编程习惯

char * p1 = "myBad"  ;  

上面的内容很糟糕,因为 const "myBad"内存正被非 Const 指针指向。编译器允许 p1 支持与 C 的向后兼容性

下面的做法也是不好的吗?

char p2[]="myBadORGood";

p1 和 p2 有什么区别。编译器是否为 p2 制作非常量拷贝?我想我在某处读到 p2 很好但不确定..

最佳答案

p2 由字符串文字初始化,即它是字符串文字的拷贝,因此 p2 是非 const 没问题:

char p2[]="myGood";

关于c++ - 编程实践 char * 指向常量的指针或指向常量的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738975/

相关文章:

c++ - C++11 优先级队列中的继承类

c++ - 使用chrono C++与时间进行比较

c++ - Vim 无法通过 clang 设置 omnifunction

c++ - 如何捕获 64 位应用程序上的堆栈损坏?

c++ - 模板常量类型转换运算符在 linux (gcc) 下不起作用

c++ - 无向图关联矩阵实现

c++ - 为什么 const 在 void/int 声明之后?

c++ - 如何在不复制函数的情况下推导 const 和非常量类型?

c++ - 添加额外的 const 资格可以破坏功能(假设编译正常)?

c++ - 在 C++ 中使用内联和 constexpr