gpt4 book ai didi

c - 关于如何使用指针将数组作为函数参数传递的代码片段的说明?

转载 作者:太空狗 更新时间:2023-10-29 16:01:31 25 4
gpt4 key购买 nike

以下是C语言添加数组元素的CODE SNIPPET!

主要功能:

int main ()
{
int a[3]={10,11,12};
printf("%d\n" , arraysum(a,3) );
}

Arraysum函数定义:

int arraysum (int *addr , int len )
{
int sum = 0, i ;
for (i=0 ; i<len ; i++)
sum += addr[i];
return sum ;
}

输出: 33

问题:我知道在 main 函数中,数组 a 的基址被传递给指针 addr ,但在那之后我无法理解以下语句是如何工作的:

sum+=addr[i];

Q1: 接下来,addr 是一个指针变量,那么我如何在 arraysum 函数中将它用作数组?

Q2: 更重要的是,当我将数组 a 的基地址传递给指针时,我怎么能够访问数组 a< 的所有元素 通过它?

最佳答案

Q1 : Next , addr was a pointer variable , then how am i using it as an array in arraysum function ?

实际上,你把它倒过来了。下标运算符 [] 适用于指针,不适用于数组。嗯?我在说什么?那么当您执行 array[i] 时,其中 array 是一个数组,该数组实际上 衰减 到指向其第一个元素的指针。所以你总是将 [] 应用于指针。在您的例子中,addr已经指向其第一个元素的指针。

Q2 : More importantly when i passed base address of array a to the pointer then how come i am able to access all the elements of array a through it ?

当你做 something[i] 时,它等同于 *((something) + (i))。这只是基本的指针算法。获取指向第一个元素的指针,将指针递增 i,然后取消引用它。

由于这种指针算法,我们可以通过指向其中一个元素的指针访问数组的所有元素。

关于c - 关于如何使用指针将数组作为函数参数传递的代码片段的说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548065/

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