Char*string []声明错误

fat*_*k92 5 c pointers char

这个宣言有什么问题?

char *add_element[] = {"1","S"};
Run Code Online (Sandbox Code Playgroud)

编译时我得到这个错误 -

warning: initialization discards qualifiers from pointer target type
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

这个问题与我为什么不同; 使用'const char*'类型的表达式初始化'char*'会丢弃限定符?.这可以通过下面的评论来验证.谢谢你的回答.

可能重复的问题是相关的,但不一样.这是为什么void func(const char*ptr){char*local = ptr; ...}引出警告,而不是像这里处理初始化程序.我不认为这个问题应该作为该问题的副本而结束

Car*_*rum 9

您似乎正在使用GCC并已-Write-strings打开.这使得编译器正好警告这种情况.它使字符串文字成为const char数组而不是char数组,使你的初始化丢弃const.使用:

const char *add_element[] = { "1", "S" };
Run Code Online (Sandbox Code Playgroud)

或者关掉-Wwrite-strings.

从GCC手册:

-Wwrite-strings

在编译C时,为字符串常量提供类型,const char[length]以便将一个地址复制到非const char *指针中时会收到警告.这些警告将帮助您在编译时找到可以尝试写入字符串常量的代码,但前提是您const在声明和原型中使用时非常小心.否则,这只会​​令人讨厌.这就是为什么我们没有-Wall提出这些警告的要求.

编译C++时,请注意从字符串文字转换为不推荐的转换char *.对于C++程序,默认情况下会启用此警告.