这两者在内存分配方面有什么不同。
char *p1 = "hello";
char p2[] = "hello";发布于 2011-01-13 21:17:10
第一个函数创建一个指针变量(四个或八个字节的存储空间,取决于平台),并在其中存储字符串文字的位置;第二个函数创建一个包含六个字符(包括零字符串终止符字节)的数组,并将文字复制到那里。
你应该在第一行得到一个编译器警告,因为文字是const。
发布于 2011-01-13 21:16:05
第一个是指向const (只读)数据的非常数指针,第二个是非常数数组。
发布于 2011-01-13 21:21:00
由于第一个是指向const (只读)数据的非常数指针,第二个是非常数数组,正如Paul所说,您可以这样写:
p2[2]='A'; //changing third character - okay但是你不能写:
p1[2]='A';//changing third character - runtime error!https://stackoverflow.com/questions/4680431
复制相似问题