我不确定为什么在这种情况下 strcat 对我有效:
char* foo="foo";
printf(strcat(foo,"bar"));
这段代码成功地为我打印了“foobar”。
然而,根据stackoverflow上早期的一篇讨论主题(链接在此:I just can't figure out strcat),它说,上述代码不应该工作,因为foo被声明为字符串字面值。相反,它需要被声明为缓冲区(一个预定大小的数组,以便它可以容纳我们试图连接的另一个字符串)。
在那种情况下,为什么上述程序对我来说能够成功运行呢?
foo
是可写的,也不能将其连接起来。考虑尝试连接到char foo[] = "foo";
。与char foo[42] = "foo";
不同,没有可用的内存。 - Weather Vane