我是靠谱客的博主 欢喜母鸡,最近开发中收集的这篇文章主要介绍c++中的字符串常量为什么可以赋值给char*?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

http://www.zhihu.com/question/20362192

 

c++中的字符串常量为什么可以赋值给char*?

比如可以写一下代码:
char*str="hello";
其中的"hello"不是const char*类型吗?为什么可以给char*赋值?

1.

 
C中"hello"类型是char[6],所以允许char* str="hello"; 你甚至可以接着使用 *str = "d" 这样赋值,编译通过没问题只不过会在运行时报错,因为"hello"位于只读存储区不允许写操作。
C++中"hello"的类型是const char[6],不过为了兼容C代码做了特殊处理,所以也允许赋值给char*指针。
 

2.

 
"hello" 在这里是一个地址, char * 类型指向一个地址的话,没有问题, 至于地址的内容能否修改是另一回事 

3.

决定权在你, 这只是一个地址, 对于c来说, 这完全没问题, 但是你如果修改这个串的话, 就直接猝死.
对于c++来说, 编译器可能会做隐式转换, 但仍然会给你一个友情提示. 总而言之, 不要过份依赖编译器.
认真关注每一个警告.

转载于:https://www.cnblogs.com/buxianghe/archive/2013/04/22/3036675.html

最后

以上就是欢喜母鸡为你收集整理的c++中的字符串常量为什么可以赋值给char*?的全部内容,希望文章能够帮你解决c++中的字符串常量为什么可以赋值给char*?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部