在C ++中初始化char *的不推荐方法是什么?

时间:2011-05-01 08:20:13

标签: c++

当我在C ++中初始化一个本地char *变量时:

char * pattern = "oggS";

编译器警告我:

Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’

在C ++中执行此操作的不推荐方法是什么?

如果重要,这就是我如何调用编译器(来自Eclipse):

g++-4.5 -O0 -g3 -Wall -std=c++0x -c -fmessage-length=0 -MMD -MP -MF"Foo.d" -MT"Foo.d" -o"Foo.o" "Foo.cpp"

1 个答案:

答案 0 :(得分:26)

你想:

const char * pattern = "oggS";

或者如果您打算稍后更改字符串中的字符:

char pattern[] = "oggS";

第一个创建指向const-char的指针,指向字符串文字。您无法通过此指针更改文字,这很好,因为更改文字会为您提供未定义的行为。第二个创建一个包含5个字符的数组,并使用“oggS”对其进行初始化。结果不是字符串文字,只是一个普通的数组,所以你可以改变它包含的字符。