我知道这是一个非常基本的问题.我很困惑为什么以及如何以下不同.
char str[] = "Test";
char *str = "Test";
Run Code Online (Sandbox Code Playgroud) 我对c ++中的字符串文字几乎没有疑问.
char *strPtr ="Hello" ;
char strArray[] ="Hello";
Run Code Online (Sandbox Code Playgroud)
现在strPtr和strArray被认为是字符串文字.
根据我的理解,字符串文字存储在只读存储器中,因此我们无法修改它们的值.
我们做不到
strPtr[2] ='a';
and strArray[2]='a';
Run Code Online (Sandbox Code Playgroud)
以上陈述都应该是非法的.编译器应该在两种情况下抛出错误.
编译器将字符串文字保留在只读内存中,因此如果我们尝试修改它们,编译器会抛出错误.
const数据也被认为是只读的.
是否同样处理字符串文字和const数据?我可以使用const_cast从字符串文字中删除常量可以更改其值吗?
字符串文字到底存储在哪里?(在程序的数据部分)
c++ ×2