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