字符串的奇怪问题
char a[] = "hello ";
char* p = a;
*p = 'w ';
这样的话就可以修改*p的值
但是
char* a = "hello ";
char* p = a;
*p = 'w ';
就不行了,不知道是什么原因?
[解决办法]
char a[] = "hello "; 表示定义了一个字符数组,数组的内容从 "hello "里复制。数组成员的内存从栈中获得
char* a = "hello "; 表示定义了一个指向字符的指针,指针的值是全局const字符数组 "hello "中第一个字符的地址。改变const的内容将导致未定义错误。如果从实现角度来看的话, "hello "存放在只读的.data段中,*p = 'w '将导致Access Violation错误。