【发布时间】:2016-11-11 20:29:55
【问题描述】:
我阅读了this page 关于数组和指针之间的关系,它澄清了很多事情,但我仍然有点困惑。以下代码:
#include <stdio.h>
int main()
{
int i, classes[6],sum = 0;
printf("Enter 6 numbers:\n");
for(i = 0; i < 6; ++i)
{
// (classes + i) is equivalent to &classes[i]
scanf("%d",(classes + i));
// *(classes + i) is equivalent to classes[i]
sum += *(classes + i);
}
printf("Sum = %d", sum);
return 0;
}
所以根据我的理解,这段代码读取了 6 个整数,然后将每个整数存储在一个内存地址(classes+i)中。然后它打印出每个内存地址 *(classes + i) 的值的总和。这一切都是有道理的,但为什么首先需要将值存储到 (classes + i) 中?这样做有什么作用?感谢您的帮助,我正在努力完全理解这些东西。
【问题讨论】:
-
why exactly do the values need to be stored没有理由,只是为了向您展示如何将值存储在数组的不同索引处 -
您似乎完全理解代码的作用。要了解为什么有人编写代码来做到这一点,您必须询问编写它的人。你可以随心所欲地查看
printf("moose");,你不会明白我为什么要写代码来打印“moose”。 -
如果你的意思是“为什么你必须这样做得到 6
ints 的总和?”。答案是,你没有。您可以简单地循环,将每个输入的值添加到sum,然后在最后打印出 sum。除非您需要访问for循环之外的各个值,否则没有实际理由存储它们。