关于静态存储区域和数组的一个发现
如
char* p = "hello world A"
char a[] = "hello world B"
表达式
1. p[0] = 'C';
2. a[0] = 'C';
这两个是有不同的表现的
1.显然, p[0] = 'C';是会在运行时报错的,因为p的作用,仅仅指向一个内存的地址,在这里,它是指向常量"hello world A"的地址
常量是处于静态存储区内,在编译的时候,内存就已经分配好了,对它进行赋值显然是会报错的。
2.而 char a[]="hello world B",这其实是一个定义数据的过程,注意,是“定义”,也就是说,会分配内存组它,它会将"hello world B"
这个常量复制到它所申请的内存中,所以a[0] = 'C';可以正常的运行。