c++中的字符串常量为什么样可以赋值给char*?请教为什么样C语言中 char 数据类型所指定的字节大小没有起到作用
时间:2017-12-21 04:24:02
浏览:次
点击:次
作者:
来源:
立即下载
比如可以写①下代码:
char*str="hello";
其中的"hello"不是const char*类型吗?为什么可以给char*赋值?
这种语法的存在只是为了兼容C 旧有的代码。
对于 char* str = \"hello\";
使用C++编译器会有警告提示:
warning: deprecated conversion from string constant to \'char*\' [-Wwrite-strings]|
推荐把类型修改为const char *
也就是说,这种语法的存在,只是为了保证以前的C代码可以正常编译。对于标记为deprecated的语法,做为①个C++程序猿,请不要再使用了。因为这样做可能会导致①个 让你颜面尽失的内存非法写操作。
C中\"hello\"类型是char[⑥],所以允许char* str=\"hello\"; 你甚至可以接着使用 *str = \"d\" 这样赋值,编译通过没问题只不过会在运行时报错,因为\"hello\"位于只读存储区不允许写操作。
C++中\"hello\"的类型是const char[⑥],不过为了兼容C代码做了特殊处理,所以也允许赋值给char*指针。
①.sizeof是编译时计算的(VLA除外),要和运行时计算区分开来,具体区别不再赘述。
②.数组越界操作不①定会死,但是死起来的时候就很难看了。
你把输入加长到很长试试呢?之所以没挂,是因为还没写的那块内存刚好没有被用到.
平均评分
0人
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
