wfb*_*ale 3 c++ c-strings string-literals
所以编译器告诉我这是一个从字符串文字到char*的不推荐的转换:
char* myString = "i like declaring strings like this";
Run Code Online (Sandbox Code Playgroud)
我应该担心吗?这是错误的方法吗?
我需要传递myString给一个接受a的函数,char*我应该在char*没有这个转换的情况下正确地初始化它?
是的,你应该担心它!
您应该将其声明为:
const char* myString = "i like declaring strings like this";
Run Code Online (Sandbox Code Playgroud)
mystring是指向字符串文字的指针"i like declaring strings like this",字符串文字驻留在一个内存空间(实现定义)中,程序不应该修改它.
修改字符串文字会导致未定义的行为.
因此,不推荐使用C++ 03 Standard声明不带关键字的字符串文字const,这样可以确保不能通过指针修改字符串文字.
回答你的问题编辑,已由@Benjamin在评论中发布,只是引用他的回答:
使用数组:
char myString [] ="我喜欢声明这样的字符串";
将文字复制到数组中,可以修改副本
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |