可能重复:
How to get rid ofdeprecated conversion from string constant to ‘char*’
warnings in GCC?
这项任务:
char *pc1 = "test string";
给了我这个警告:
警告:已弃用从字符串常量转换为'char *'
虽然这个似乎很好:
char *pc2 = (char*)("test string");
这是一个更好的方法吗?
注意:由于其他原因,我无法使用const char*
。
答案 0 :(得分:7)
字符串文字是C ++中的const char[]
,可能存储在只读内存中,因此如果您尝试修改它,程序将崩溃。指向一个非常量指针是一个坏主意。
答案 1 :(得分:5)
这取决于您是否需要修改字符串文字。如果是的话,
char pc1[] = "test string";
答案 2 :(得分:5)
在第二个示例中,您必须确保不要尝试修改pc2
指向的字符串。
如果您确实需要修改字符串,可以使用以下几种方法:
制作动态分配的文字副本(完成后不要忘记free()
):
char *pc3 = strdup("test string"); /* or malloc() + strcpy() */
使用数组而不是指针:
char pc4[] = "test string";