这两者在内存分配方面有什么不同。
char *p1 = "hello";
char p2[] = "hello";
答案 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!