好久没写C代码了,生疏了。有人知道为什么以下代码将“rtyaze”打印到标准输出吗?我期待着“rty”。
#include <stdio.h>
int main (void) {
char s[] = "aze";
char ss[][3] = { "rty" };
printf("%s\n", ss[0]);
}
最佳答案
通过使 ss 第一个元素处的字符串具有 3 个字符,您可以消除空终止符。
因此 printf 继续执行,直到找到空终止符。碰巧,您的另一个字符串一定是紧接在第一个字符串之后放置在内存中的。
如果将 ss[][3] 中的 3 更改为 4,您应该会得到预期的行为。
关于c - 为什么 printf 打印一个未作为参数传递的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759637/