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星
用户评分:
发表评论

评论

  • 暂无评论信息