关于静态存储区域和数组的一个发现

   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';可以正常的运行。

posted on 2010-10-12 14:24  Robert.Hu  阅读(177)  评论(0编辑  收藏  举报

导航