可能重复:
字符串文字与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以后,它是).
如果您正确设置了编译器的警告级别,则在尝试执行此操作时将收到警告.如果您的编译器的错误级别设置非常严格,那么它将被视为错误.