内存分配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!