Pie*_*o M 13 c++ string pointers char literals
可能重复:
如何摆脱deprecated conversion from string constant to ‘char*’海湾合作委员会的警告?
这项任务:
char *pc1 = "test string";
Run Code Online (Sandbox Code Playgroud)
给了我这个警告:
警告:不推荐将字符串常量转换为'char*'
虽然这个似乎很好:
char *pc2 = (char*)("test string");
Run Code Online (Sandbox Code Playgroud)
这是一个真正更好的方法吗?
注意:由于其他原因我不能使用const char*.
字符串文字是const char[]C++中的一个,可以存储在只读内存中,因此如果您尝试修改它,程序将崩溃.指向一个非常量指针是一个坏主意.
这取决于您是否需要修改字符串文字。如是,
char pc1[] = "test string";
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,必须确保不要尝试修改指向的字符串pc2。
如果确实需要修改字符串,则有几种选择:
创建文字的动态分配副本(完成后不要忘记free()它):
char *pc3 = strdup("test string"); /* or malloc() + strcpy() */
使用数组而不是指针:
char pc4[] = "test string";
| 归档时间: |
|
| 查看次数: |
21761 次 |
| 最近记录: |