gpt4 book ai didi

C - 帮助理解指针

转载 作者:行者123 更新时间:2023-12-04 11:28:30 25 4
gpt4 key购买 nike

我读完了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 into (classes + i) in the first place?

确实,不一定是这样。目的是为了说明指针和数组之间的关系,正如您在评论中已经得到的那样:

scanf("%d",(classes + i)); // (classes + i) is equivalent to &classes[i]

但是,对于任务本身(即计算总和),不需要(classes+i)。仅使用单个变量会更简单。

int i,v,sum = 0;
printf("Enter 6 numbers:\n");
for(i = 0; i < 6; ++i)
{
scanf("%d",&v);
sum += v;
}

关于C - 帮助理解指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40555716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com