65,179
社区成员




#include <iostream>
using namespace std;
int main()
{
char arr[] = "hello world\n";
cout << arr << endl;
const char *str = arr;
arr[0] = 'H'; //没问题
cout << arr << endl;
str[0] = 'h';//这句会报错,因为你不能通过 str 修改它指向的字符串
return 0;
}
const char *p1 = "Hello world"; // p1 指向的地址可更改
// 但是不可更改p指向的内容,比如*p1='c'是错误的
p1 = "New Hello world"; // ok
p1[0] = 'c'; // Compile ERROR !!!
char const *p2 = "Hello world"; // 同p1
p2 = "New Hello world"; // ok
p2[0] = 'c'; // Compile ERROR !!!
char str[] = "Hello world";
char * const p3 = str; // p3指向地址不可更改,但是可以更改所指向地址内容
p3 = "New Hello world"; // Compile ERROR !!!
p3[0] = 'c'; // ok
p3[1] = 'p'; // ok
p3[2] = 'p'; // ok
char const * const p4 = "Hello world"; // p4指向地址和内容均不可更改
p4 = "New Hello world" // ERROR !!!
p4[0] = 'c' // ERROR !!!
const char * const p5 = "Hello world"; // 同p4