char* a = "abc";
声明了一个字符类型的指针a,并为它赋值初始值为"abc",a的值是字符串"abc"的首地址【第一个字符的地址】
其中字符串"abc"应属于全局静态存储区,这里对a[1] = 'a',在编程中会出错
char a[] = "abc";
声明了一个字符型数组,并赋初值。这里的字符串"abc"应该是属于堆存储区,是在局部开辟的空间。
所以,这里对a[1] = 'b';是正确的。由于数组类型a相当于一个const型的指针,所以a = null;会出错。