1 #include<stdio.h> 2 3 int main(int argc, char *argv[]) 4 { 5 char p1[] = "abcd"; 6 char* p2 = "abcd"; 7 8 p1[0] = 'a'; 9 p2[0] = 'a'; 10 11 return 0; 12 }
为什么程序崩溃了?
分析结果
p1是一个数组,这个数组使用字符串"abcd"初始化,所以p1这个数组的大小为5,存储在栈上
p2是一个指针,指向一个只读存储区中的字符串"abcd",p2[0]='a';试图修改只读存储区,所以崩溃。
转载于:https://www.cnblogs.com/haylim/archive/2013/01/31/2886595.html