According to the C++ standard, the following line is illegal:
char *s = "hello world"; //illegal
Though still supported by many compilers, it’s deprecated and should be avoided. The reason is that the literal “hello world” is a constant. Storing it in a non-const array of characters is an error, since it may lead to the following bug:
strcpy(s, "ab"); //OOPS! undefined behavior. attempt to modify a const object.
The correct form is:
const char *s = "hello world"; //now fine
And as a result, the compiler can detect the bug:
strcpy(s, "abc"); //now a compile-time error: strcpy's first argument should be a non-const char*