Possible Duplicate:
How to get rid ofdeprecated conversion from string constant to ‘char*’
warnings in GCC?
This assignment:
char *pc1 = "test string";
gives me this warning:
warning: deprecated conversion from string constant to 'char*'
while this one seems to be fine:
char *pc2 = (char*)("test string");
Is this one a really better way to proceed?
Notes: for other reasons I cannot use a const char*
.
A string literal is a const char[]
in C++, and may be stored in read-only memory so your program will crash if you try to modify it. Pointing a non-const pointer at it is a bad idea.
That depends on whether you need to modify the string literal or not. If yes,
char pc1[] = "test string";
In your second example, you must make sure that you don't attempt to modify the the string pointed to by pc2
.
If you do need to modify the string, there are several alternatives:
Make a dynamically-allocated copy of the literal (don't forget to
free()
it when done):char *pc3 = strdup("test string"); /* or malloc() + strcpy() */
Use an array instead of a pointer:
char pc4[] = "test string";
来源:https://stackoverflow.com/questions/8356223/assign-a-string-literal-to-a-char