内存分配char *和char []

时间:2011-01-13 13:13:34

标签: c++

这两者在内存分配方面有什么不同。

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

3 个答案:

答案 0 :(得分:38)

第一个创建一个指针变量(根据平台存储四到八个字节)并在那里存储一个字符串文字的位置,第二个创建一个包含六个字符的数组(包括零字符串终结符字节)并将文字复制到那里。

您应该在第一行收到编译器警告,因为文字是const

答案 1 :(得分:8)

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

答案 2 :(得分:6)

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

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

但你不能写:

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