【发布时间】:2015-03-16 23:19:33
【问题描述】:
我试图理解为什么以下代码会产生 BCD123 123 的输出。
void f(char *p)
{
*p += 1;
}
int main()
{
int i;
char a[] = "ABC" "123";
char *p = a;
for (i = 0; i < 3; i++)
f(p++);
printf("%s ", a);
printf("%s ", p);
return 0;
}
【问题讨论】:
-
如果你用
p += 3;替换了整个循环,那么你能理解为什么它会打印出ABC123 123吗? -
"ABC" "123"与"ABC123"完全相同。 -
哪一点你不明白?你期待什么?
-
嗯,输出变成了 BCD,那为什么最后只有 123 而不是另一个 BCD123?
-
您知道
B的“ASCII”代码比A的ASCII 代码大一吗?你认为f()在做什么?*p += 1;是什么意思?
标签: c arrays string pointers output