声明不带const的C样式字符串是否不好?如果是这样,为什么?

咖啡机 :

用C ++做到这一点

char* cool = "cool";

编译正常,但警告我:

从字符串常量到char *的弃用转换。

我永远不会在C上使用C样式的字符串std::string,但以防万一我被问到以下问题:

声明不带const修饰符的C样式的字符串是否不好如果是这样,为什么?

aschepler:

是的,此声明是不好的做法,因为它允许通过写入字符串文字来意外触发未定义行为的多种方式,包括:

cool[0] = 'k';
strcpy(cool, "oops");

另一方面,这很好,因为它分配了一个非常量char数组:

char cool[] = "cool";

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么C中的字符串用'const'声明?

以下涉及自动返回类型的两个声明是否相同?如果是这样,为什么?

在SPSS中排序日期或排序字符串是否更快?如果是这样,减多少?

是否可以从数组初始化字符串向量?如果是这样,怎么办?

调用UICollectionView.reloadData()是不好的做法吗?如果是这样,为什么?

VS 2013中“ Zither字符串”的颜色是否表示某些东西?如果是这样,该怎么办?

字符串与字符串生成器。哪个更快?如果是 stringbuilder 那么为什么要使用 string

是否可以内联不带const枚举的字符串?

函数指针:从性能的角度来看,简单的规范用法不好吗?如果是这样,c ++ 11的替代品是什么?

用户空间是否应在关机期间停止MD RAID阵列?如果是这样,为什么?

node.js回调是否必须在nonce函数中?如果是这样,为什么?

扫描程序是否应该仅实例化一次?如果是这样,为什么呢?

确定字符串是否已被修改的过程会导致性能下降吗?如果是这样,我们可以进一步优化它吗?

是否可以将使用stringify转换为字符串的JSON保存为计算机上的文件?如果是这样怎么办?

为什么必须为字符串文字声明将const添加到constexpr中?

为什么“自动”将字符串声明为const char *而不是std :: string?

为什么可以用字符串作为标识符声明属性?这样做时的内幕是什么?

在C语言中传递空字符串(“”)是否不好?

这是典型的Ajax行为吗?如果是这样,为什么?

在顶层定义闭包(仅在函数内部调用)是否“不好”?如果是这样:替代方案?

检查字符串中的字符是否为整数,如果是,则获取该 int

如果是关于一个字符串还是字符串列表的声明

Artifactory是否更改了其存储库命名约定?如果是这样,什么时候以及为什么?

为什么在存储安全字符串时会这样做?

为什么 ES6 模板字符串是这样的?

反转 python 字符串 - 为什么这样做?

为什么这样起作用:指向C字符串的指针数组?

C ++中的字符串分配:为什么这样做有效?

检查字符串数组是否包含值,如果是,则获取其位置