【发布时间】:2015-08-10 19:41:43
【问题描述】:
int main(void)
{
char s[] = "Hsjodi", *p;
for(p = s; *p; p++)
--*p;
puts(s);
return 0;
}
输出写入 Grinch,但我无法理解这段代码是如何执行的。当G,r,i 等字母在char 数组中不存在时,它如何写出Grinch,以及循环何时终止我们的确切*p 是什么意思?
【问题讨论】:
-
--*p正在递减p指向的当前字符,这样H变成G,s变成r等等。 -
@EugeneSh。这并不能解释 G 的来源。
-
不解释示例的书籍一文不值。使用不明智的“棘手”或“聪明”代码的书籍比毫无价值更糟糕。如果本书使用您示例的“随机缩进”样式,那应该从一开始就敲响警钟。首先,所以没有人会犯错误购买这本书,至少告诉我们书名和作者,其次将这本书降级为支撑你的显示器。快速搜索显示此代码已用于阿拉巴马大学的课程试卷中 - 所以我想知道是否真的有一本“书”说明你是否只是试图在某些作业上作弊?
-
@Rob 恐怕我不懂你们的 cmets。
p最初指向一个包含“Hsjodi”的字符串,所以所有的数据都是从那里获取的。 -
@Rob
'G'是输入'H'的计算的输出。