【发布时间】:2019-09-06 21:58:09
【问题描述】:
要创建一个我可以修改的字符串,我可以这样做:
// Creates a variable string via array
char string2[] = "Hello";
string2[0] = 'a'; // this is ok
并创建一个不能修改的常量字符串:
// Creates a constant string via a pointer
char *string1 = "Hello";
string1[0] = 'a'; // This will give a bus error
那么我的问题是如何修改常量字符串(例如,通过强制转换)?而且,这被认为是不好的做法,还是在 C 编程中通常会这样做?
【问题讨论】:
-
如果我没记错的话,初始化为“Hello”的
string2是const。如果通过strcpy或strdup初始化,肯定不是const。 -
@john 你错了。
string2不是常量。 -
共享,你不能做你提议的事。字符串文字是不可变的。
-
@john:
char string2[] = "Hello";通过将"Hello"的内容复制到string2来初始化string2(在C 计算模型中)。这不会使string2const。 -
呃。我想我的意思是
"Hello"。"Hello"是const,不是吗?
标签: c