在上一篇文章中,小编为您详细介绍了关于《手机芯片进步速度是不是远大于电脑?咋介绍一本书需要从哪些维度来介绍》相关知识。本篇中小编将再为您讲解标题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通信》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器