为啥c语言可以给字符指针赋值,c++反而不可以

为什么c语言可以给字符指针赋值,c++反而不可以?
char *i="hello!\n";
在c语言环境下就可以通过,c++反而通不过了。。。(也不知道我这里用“环境”这个词,用词规不规范)
vc6.0倒是能通过,而code::blocks的c语言环境建立的.c文件也能通过,就是c++环境的.cpp文件里就提示warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
为什么呀?
------解决思路----------------------
char *i="hello!\n";并没有申请空间, 字符串存储在常量区
你是不能修改这个串值的, 如i[0] = 'a';这样是错的.
但是用char *i体现不出来这一点
所以需要const char *i="hello!\n"才合适.

const关键字是后加的, vc6太老了,
------解决思路----------------------
const char*

std::string
------解决思路----------------------
貌似楼主贴出来的只是一个warning,不是错误吧
这都是编译器规定的,貌似不是C++规定的
------解决思路----------------------
因为这是当年制定C语言标准时犯的一个严重错误。