char指针指向字符串常量,C中可以通过,而c++中就不行.

CodingLife99 2018-09-13 09:32:41
char指针指向字符串常量

当下面的代码写到.c文件中时,可以正常运行;而写到.cpp文件中就会报错:无法从“const char [6]”转换为“char *”.

char * c = "hello"; 



c中的情况,我见到这样的解释:.字符串直接使用代表字符串首地址,因此可以这样用.
那么C++中为什么就出错了呢?
各位老铁们,回答下问题.
...全文
446 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
走好每一步 2018-09-14
  • 打赏
  • 举报
回复
这种语法糖就别深究了吧,浪费时间。
赵4老师 2018-09-14
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
TTT_Alone 2018-09-14
  • 打赏
  • 举报
回复
C++ 对于类型转换很严格,但是这也只是个警告,以后编程多注意即可。
月凉西厢 2018-09-14
  • 打赏
  • 举报
回复 1
C++只能 const char* c="hello";
原因在于“hello”字符串存储在只读常量区,无法修改。因此const char* =“hello"更合理。C语言没那么严格而已。
棉猴 2018-09-14
  • 打赏
  • 举报
回复
“hello”是一个字符串字面值

“hello”相当于是一个包含了6个元素的const char的数组,

所以,正如楼上朋友所说,可以将代码修改为
const char* c = "hello";
CodingLife99 2018-09-14
  • 打赏
  • 举报
回复
我擦,手滑点成无满意结贴了,这个还能改吗?
CodingLife99 2018-09-14
  • 打赏
  • 举报
回复
引用 5 楼 TDTO_O 的回复:
C++ 对于类型转换很严格,但是这也只是个警告,以后编程多注意即可。

报error的.
CodingLife99 2018-09-14
  • 打赏
  • 举报
回复
引用 8 楼 tajon1226 的回复:
这种语法糖就别深究了吧,浪费时间。

只是想了解下
ForestDB 2018-09-13
  • 打赏
  • 举报
回复
C++类型更严格。const char * c = "hello";应该就可以了吧。或者用强转或者const_cast。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧