我能理解
char *s = "Hello World!" ; 存储在只读内存中,不能通过指针修改字符串文字。
这有什么不同
const char *s = "Hello World!"; 'string‘char *还是const char *的类型?
发布于 2013-03-29 21:41:21
通过将类型指定为const char *,很难意外覆盖内存,因为如果您尝试这样做,编译器会给出一个错误:
const char *s = "Hello World!";
s[0] = 'X'; // compile error如果您不使用const,那么问题可能直到运行时才会被捕获,或者它可能只是导致您的程序出现细微的错误。
发布于 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*的转换,所以现在您只能合法地这样做
const char *s = "Hello world!";https://stackoverflow.com/questions/15704383
复制相似问题