为什么会发生以下情况:
char s[2] = "a";
strcpy(s,"b");
printf("%s",s);
--> 成功执行
char *s = "a";
strcpy(s,"b");
printf("%s",s);
--> 段错误
第二个变量定义的时候会为s
分配两个字节的内存,为什么不能将"b"
复制到那里呢?
char[N]
,其中N是包括空字符终止符在内的字面量长度。但是,确实应该是const char[N]
,在C++中它也是如此,C++对于const正确性比C更加严格。 - Steve Jessop