内存分配char *和char

这两者在内存分配方面有什么区别?

char *p1 = "hello"; char p2[] = "hello"; 

第一个创build一个指针variables(取决于平台的四个或八个字节的存储空间)并存储string文本的位置 。第二个创build一个由六个字符组成的数组 (包括零string终止字节),并将文字复制到那里。

你应该在第一行得到一个编译器警告,因为字面量是const

第一个是const(只读)数据的非const指针,第二个是非const数组。

由于第一个是一个非常量的const(只读)数据指针,第二个是一个非const数组,正如Paul所说,你可以这样写:

 p2[2]='A'; //changing third character - okay 

但是你不能写:

 p1[2]='A';//changing third character - runtime error!