https://www.cnblogs.com/Fflyqaq/p/12002635.html
示例
int main()
{
char s1[] = "hi";
const char* s2 = "hi";
cout << "*s1: " << static_cast<void*>(&s1) << endl;
cout << "s1: " << static_cast<const void*>(s1) << endl;
cout << "*s2: " << static_cast<void*>(&s2) << endl;
cout << "s2: " << static_cast<const void*>(s2) << endl;
s1[2] = 'o';
//s1 = "1111"; // error
//s2[1] = 'o'; // error
s2 = "1111";
cout << "=========================================" << endl;
cout << "*s1: " << static_cast<void*>(&s1) << endl;
cout << "s1: " << static_cast<const void*>(s1) << endl;
cout << "*s2: " << static_cast<void*>(&s2) << endl;
cout << "s2: " << static_cast<const void*>(s2) << endl;
char a1[] = "abc";
char a2[] = "abc";
const char* a3 = "abc";
const char* a4 = "abc";
cout << "=========================================" << endl;
cout << "*a1: " << static_cast<void*>(&a1) << endl;
cout << "a1: " << static_cast<const void*>(a1) << endl;
cout << "*a2: " << static_cast<void*>(&a2) << endl;
cout << "a2: " << static_cast<const void*>(a2) << endl;
cout << "*a3: " << static_cast<void*>(&a3) << endl;
cout << "a3: " << static_cast<const void*>(a3) << endl;
cout << "*a4: " << static_cast<void*>(&a4) << endl;
cout << "a4: " << static_cast<const void*>(a4) << endl;
}

- 对象
s1,s2的内存地址都没改变。 s2指向的内容的地址变了s1指向的内容改变了。s1无法指向新的地址内容,可以修改当前。s2无法修改当前指向内容,可以重新指向。char[]指向的内容是拷贝,即使多个对象内容相同,如abc,但他们指向内容的地址不同。char*指向地址,如果多个对象内容相同,如abc,他们指向的内容地相同。

248

被折叠的 条评论
为什么被折叠?



