【发布时间】:2014-09-02 17:41:41
【问题描述】:
很明显,像
这样初始化一个char数组char* string = "foobar";
将使其不可变。另一方面,初始化一个 char 数组,如
char string[] = "foobar";
将使其可变。
对指向 char 数组的指针进行可变初始化的最佳方法是什么?
// member char arrays are immutable
char* arr[] = {"foo", "bar"};
【问题讨论】:
-
轻微修正:它在所有系统上是不可变的。一些系统只是无法捕获未定义的行为并崩溃,但如果它们不这样做,可能会发生更糟糕的事情:例如,两个具有相同内容的字符串文字,或者一个是另一个的尾部,可以共享相同的内容内存,因此尝试修改一个会导致您的程序在另一个中看到修改!