首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >const char *和char *

const char *和char *
EN

Stack Overflow用户
提问于 2013-03-29 21:36:35
回答 2查看 633关注 0票数 6

我能理解

代码语言:javascript
复制
char *s = "Hello World!" ; 

存储在只读内存中,不能通过指针修改字符串文字。

这有什么不同

代码语言:javascript
复制
const char *s = "Hello World!"; 

'string‘char *还是const char *的类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-29 21:41:21

通过将类型指定为const char *,很难意外覆盖内存,因为如果您尝试这样做,编译器会给出一个错误:

代码语言:javascript
复制
const char *s = "Hello World!";
s[0] = 'X';  // compile error

如果您不使用const,那么问题可能直到运行时才会被捕获,或者它可能只是导致您的程序出现细微的错误。

票数 6
EN

Stack Overflow用户

发布于 2013-03-29 21:41:33

区别在于后者是合法的,而前者是不合法的。这是在C++11中所做的更改,在形式上,"Hello World!"的类型是const char[13];它可以转换为const char*。在过去,它的类型可以是char[13],可以转换为char*。C++通过添加const更改了数组的类型,但保留了到char*的转换,以便使用char*的现有C代码可以在C++中工作,但修改指针所指向的文本会产生未定义的行为。C++11删除了到char*的转换,所以现在您只能合法地这样做

代码语言:javascript
复制
const char *s = "Hello world!";
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15704383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档