gpt4 book ai didi

c - 指向 C 中的 int 指针数组的指针

转载 作者:行者123 更新时间:2023-12-04 05:46:00 25 4
gpt4 key购买 nike

我在访问指针数组中的元素时有点困惑。假设我有一个指针 int **score_cards,它指向一个大小为 n 的 int 指针数组。我想找到数组元素指向的整数之和。

我正在考虑这样做:

int sum = 0;
int i;
for(i = 0;i<n;i++){
sum = sum + *(*score_card+ i);
}

但这是错误的,而以下是正确的:

int sum = 0;
int i;
for(i = 0;i<n;i++){
sum = sum + *(*(score_card + i));
}

现在,我有两个问题,既然*score_cards 指向数组的第一个元素,那么第i 个元素不是*score_cards + i 吗?即第一个元素的地址+ i?另外,为什么我们将 i 增加 1,而不是 sizeof(*int) ?提前致谢!

最佳答案

请记住,*(a + b) 存在简写语法 a[b] 并且完全相同。您不应该使用后者,因为它有些难以辨认。

since *score_cards points to the first element of the array

这是不正确的。 score_cards 指向数组的第一个元素,*score_cards 是数组的第一个元素。因此数组的第 i 元素是 *(score_cards + i) 或同样是 score_cards[i]

Also, why do we increment i by 1, and not sizeof(*int)?

在 C 中,当向指针添加整数时,整数隐式乘以所指向类型的大小。这样当 a 是某种类型的对象数组时,a[i] 是该数组的第 i 元素。

关于c - 指向 C 中的 int 指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386230/

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