以下代码有何不同?
1.
指针指向相同的字符串,但是有什么区别吗?
1.
char *p;
strcpy(p,"String");
2.
char *p;
p = "String";
指针指向相同的字符串,但是有什么区别吗?
p
必须指向至少7字节大小的可写内存块。而第二个操作不需要这样。*p= 's'; // Make the value all lowercase
p
指向字符串常量的内存;写入该内存是未定义行为。(1)
是内存乱写,可能会导致运行时错误。
你不能将数据复制到你没有拥有的内存中(即没有以某种方式分配内存)。
p -> [S][t][r][i][n][g][0]
但是,只要您没有将p声明为p const *
,您应该会收到编译器警告。
""
是一个只读内存中的字符串字面量。它占用一个字节,即'\0'
。对其进行写操作是未定义行为。 - Sergey Kalinichenko