可能是重复问题:
如何在GCC中消除deprecated conversion from string constant to ‘char*’
警告?
这个任务:
char *pc1 = "test string";
这条代码导致了警告:
警告:从字符串常量转换为 'char*' 是不推荐的。
而这段代码似乎没有问题:
char *pc2 = (char*)("test string");
这种方法是否是一个更好的选择?
注:由于其他原因,我无法使用const char*
。
字符串字面量是C++中的一个const char[]
,可能存储在只读内存中,所以如果您尝试修改它,程序将崩溃。将非常量指针指向它是一个不好的想法。
pc2
指向的字符串。free()
):char *pc3 = strdup("test string"); /* 或者 malloc() + strcpy() */
char pc4[] = "test string";
strdup
不是标准的C语言... - Oliver Charlesworthchar pc4[] = "test string";
,并且没有收到任何警告。我想知道这是否是正确的操作方式,或者我只是在我的代码中引入了一个错误... - Pietro Mstrlen("test string")+1
字节即可,您不会植入任何错误。如果您需要更长的数组,可以显式指定长度:char pc4[32] = "test string";
- NPEstatic char pc4[] = "test string";
并且没有收到任何警告。我这样做是因为它在函数内部,我希望字符串在函数外部也可用。我想知道这是否是正确的做法,或者我只是在我的代码中引入了一个错误... - Pietro Mchar pc1[] = "test string";
const char *
来实现这个。 - Oliver Charlesworthchar const*pc1
,一切都应该没问题。 - Jens Gustedtconst char*
,但是那个字符串字面值确实是一个const
。你不能修改它。 - David Heffernan