【发布时间】:2015-02-09 02:02:16
【问题描述】:
如果我在 C 中有以下字符串:
char s[]="Question";
然后我注意到下面的两个 prtintf 都在终端中正确打印了字符串。
1.
printf("%s\n",s);
2.
printf("%s\n",&s);
在 C 中打印字符串的正确方法是什么。如果它们都相同,那么遵循的约定是什么? 1个还是2个?
谢谢。
【问题讨论】:
-
第二个是未定义的行为。第一个是正确的。 C-faq 12.12b
-
数组的名称,在 C 中,降级为数组的地址。所以 printf("%s", array) 是正确的。使用 printf("%s", &array);是说打印数组地址的地址,该地址未定义并且可以/将导致段错误事件。