主函数:
```c #include int main() { int array[5] = {1, 2, 3, 4, 5}; int sum = 0; for(int i = 0; i < 5; i++) { sum += array[i]; } printf("Sum of array is: %d", sum); return 0; } ```
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];
问题1:接下来,addr
是一个指针变量,那么在arraysum
函数中我如何将其用作数组?
问题2:更重要的是,当我将数组a
的基地址传递给指针时,我如何通过它访问数组a
的所有元素?
sum += addr[i]
可以理解为sum = sum + addr[i]
,如果更容易理解的话。arraysum
中可以使用数组,因为它仍然存在,并且您有指向内存中第一个元素的指针。