c++中的字符串常量为什么样可以赋值给char*?请教为什么样C语言中 char 数据类型所指定的字节大小没有起到作用

发表时间:2017-12-21 04:24:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《手机芯片进步速度是不是远大于电脑?咋介绍一本书需要从哪些维度来介绍》相关知识。本篇中小编将再为您讲解标题c++中的字符串常量为什么样可以赋值给char*?请教为什么样C语言中 char 数据类型所指定的字节大小没有起到作用。

比如可以写①下代码:

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除外),要和运行时计算区分开来,具体区别不再赘述。

②.数组越界操作不①定会死,但是死起来的时候就很难看了。

你把输入加长到很长试试呢?之所以没挂,是因为还没写的那块内存刚好没有被用到.

编后语:关于《c++中的字符串常量为什么样可以赋值给char*?请教为什么样C语言中 char 数据类型所指定的字节大小没有起到作用》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《网络中每一跳的路由器都是什么样样子的?为什么样网络设备(交换机路由器)使用RJ45接口做console口又不支持tcpip只能用com通信》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题