🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C 程序:使用指针,递归和函数来查找数组元素的总和 > 原文: [https://beginnersbook.com/2014/06/c-program-to-find-sum-of-array-elements-using-pointers-recursion-functions/](https://beginnersbook.com/2014/06/c-program-to-find-sum-of-array-elements-using-pointers-recursion-functions/) 在本教程中,我们将学习以下两种方法来找出数组元素的总和: 1)使用递归 2)使用指针 ### 方法 1:使用递归的数组元素的总和:函数调用自身 该程序调用用户定义的函数`sum_array_elements()`,函数以递归方式调用自身。这里我们对数组元素进行了硬编码,但是如果你想让用户输入值,你可以使用`for`循环和`scanf`函数,就像我在本文的下一节(方法 2:使用指针)中所做的那样。 ```c #include<stdio.h> int main() { int array[] = {1,2,3,4,5,6,7}; int sum; sum = sum_array_elements(array,6); printf("\nSum of array elements is:%d",sum); return 0; } int sum_array_elements( int arr[], int n ) { if (n < 0) { //base case: return 0; } else{ //Recursion: calling itself return arr[n] + sum_array_elements(arr, n-1); } } ``` 输出: ```c Sum of array elements is:28 ``` ### 方法 2:使用指针的数组元素的总和 这里我们设置指向数组基址的指针然后我们递增指针并使用`*`运算符来获取和汇总所有数组元素的值。 ```c #include<stdio.h> int main() { int array[5]; int i,sum=0; int *ptr; printf("\nEnter array elements (5 integer values):"); for(i=0;i<5;i++) scanf("%d",&array[i]); /* array is equal to base address * array = &array[0] */ ptr = array; for(i=0;i<5;i++) { //*ptr refers to the value at address sum = sum + *ptr; ptr++; } printf("\nThe sum is: %d",sum); } ``` 输出: ```c Enter array elements (5 integer values): 1 2 3 4 5 The sum is: 15 ```