gpt4 book ai didi

c - 解释一下这种在数组中获取输入的方法

转载 作者:行者123 更新时间:2023-11-30 18:47:31 25 4
gpt4 key购买 nike

for(int i = 1 ; i <= n ; ++i)
{
scanf("%d" , arr + i);
}

解释这种在数组中获取输入的方法。

通常,我尝试使用这种方法在数组中输入元素。

for(int i = 1 ; i <= n ; ++i)
{
scanf("%d" , &arr[i]);
}

这两种方法有什么区别?``我发现前一种用于竞争性编程......

最佳答案

以下是使用 scanfn 元素读入数组的“正常”方法:

for(int i = 0; i < n; i++)
scanf("%d", &arr[i]);

请注意,我正在打电话

    scanf("%d", &arr[i]);

使用 & ,以便我将指针传递给 array[i] ,以便 scanf 可以填充该元素。 (关于 scanf 需要记住的令人惊讶的事情之一是,您必须始终向它传递指针以进行填充,这与 printf 不同,arr 中您传递值以进行打印。)

但是如果我们知道指针、数组以及指针算术是如何工作的,我们就可以看到这种替代形式是等效的:

    scanf("%d", arr + i);

原因是,当我们在这样的表达式中提及数组 arr + i 时,我们得到的是指向数组第一个元素的指针。然后 i 是指向数组的 scanf 第一个元素的指针,这正是我们想要传递给 i = 1; i <= n 的内容,就像以前一样。

(另外,你会注意到我已经悄悄地将你的循环从 i = 0; i < n 更改为 ojit_code 。C 中的数组是从 0 开始的,因此你总是希望你的下标从 0 运行到 n-1,而不是从 1 到 n .)

关于c - 解释一下这种在数组中获取输入的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386939/

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