以下代码有什么区别?
1.
char *p;
strcpy(p,"String");
Run Code Online (Sandbox Code Playgroud)
2.
char *p;
p = "String";
Run Code Online (Sandbox Code Playgroud)
指针指向同一个字符串,但有什么区别吗?
为了使第一个操作起作用,p必须指向一个至少7字节大小的可写内存块.第二个操作不需要它.
在第一次操作之后,字符串仍然可写:您可以在第一个字符串上执行此操作,但不能在第二个字符串上执
*p= 's'; // Make the value all lowercase
Run Code Online (Sandbox Code Playgroud)
第二个指针赋值指向p字符串文字的内存; 写入该内存是未定义的行为.