关于c ++:内存分配char *和char []


Memory Allocation char* and char[]

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

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


第一个创建一个指针变量(4或8字节的存储空间取决于平台),并在其中存储一个字符串文本的位置;第二个创建一个包含6个字符(包括零字符串终止符字节)的数组,并在其中复制该文本。

您应该在第一行得到一个编译器警告,因为文本是const


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


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

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

但你不能写:

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