char *str1="abcde"; //字符串常量
char str2[]="abcde"; //字符数组也是字符串
执行
str1[0]='X'; (1)
str2[0]='X'; (2)
当执行(1)时程序崩溃,执行(2)时正常
主要因为:
char *str1="abcde" str1在栈区,"abcde"在常量区
char str2[]="abcde"; str2和"abcde"都在栈区
操作(1)将常量'a'改为'X'程序自然就崩溃了
操作(2)将局部变量'a'改为'X'程序正常执行