代码中的文字是char还是const char?

Pet*_*isu 2 c++

可能重复:
字符串文字与C中的const char*

为什么我能做到这一点?

void foo(char * cstr) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并在代码中

foo("some text");
Run Code Online (Sandbox Code Playgroud)

不应该"某些文本"是const char*类型?

如果它的char*,意味着我可以修改它?

pmg*_*pmg 10

在C中,字符串文字属于类型char[N],其中N对于字符串文字中的所有字符加上终止空字节而言足够大.

"foobar"C中的字符串文字具有类型char [7].它的使用经常衰减到指向其第一个元素的指针char*.

我相信,在C++中处理字符串文字是不同的.


Lig*_*ica 10

是的,它应该是const.

在C++ 03中,您可以省略const仅用于向后兼容C,但有两个警告:

  • 仍然不允许修改数据.是的,这非常令人困惑.这就是为什么离开了const弃用.理想情况下,它是明显不允许的(并且,在C++ 11以后,它是).

  • 如果您正确设置了编译器的警告级别,则在尝试执行此操作时将收到警告.如果您的编译器的错误级别设置非常严格,那么它将被视为错误.