注册 登录
编程论坛 C++教室

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

一日之计在 发布于 2015-03-21 17:53, 548 次点击
char *i="hello!\n";
在c语言环境下就可以通过,c++反而通不过了。。。
vc6.0倒是能通过,而code::blocks的c语言环境建立的.c文件也能通过,就是c++环境的.cpp文件里就提示warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
为什么呀?
2 回复
#2
yangfrancis2015-03-21 21:51
C++的char型只承认单个字符,并且赋值也规定死了要用单引号。除非是数组,才能接受字符串。数组名在不带下标的情况下也正是字符串中第一个字符的指针。C是怎么样的语法就不太清楚了
#3
rjsp2015-03-23 08:30
无论是C,还是C++,正确的写法都是 const char *i="hello!\n";
但因为C以前没有const关键字,存在着大量的类似 char *i="hello!\n" 代码,所以网开一面,允许char *i="hello!\n"编译通过。
warning 不是 error
1