1、使用for循环指针遍历数组
使用for
循环通过指针算术运算,指针的移动来遍历数组,实现计算数组的元素的和,代码如下,
1)方法1
#include <stdio.h> int sum_array(int arr[], int size) { int sum = 0; int *ptr = arr; // 指向数组的第一个元素 for (int i = 0; i < size; i++) { sum += *ptr; // 累加当前指针指向的元素值 ptr++; // 移动指针到下一个元素 } return sum; } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum_array(arr, size); printf("Sum of array elements: %d\n", result); return 0; }
2)方法2
#include <stdio.h> int sum_array(int arr[], int size) { int sum = 0; for (int *ptr = arr; ptr < arr + size; ptr++) { sum += *ptr; // 累加当前指针指向的元素值 } return sum; } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum_array(arr, size); printf("Sum of array elements: %d\n", result); return 0; }
2、使用while循环遍历数组
使用while
循环通过指针的移动来遍历数组,实现计算数组的元素的和,代码如下,
1)方法1
#include <stdio.h> int sum_array(int arr[], int size) { int sum = 0; int *ptr = arr; // 指向数组的第一个元素 int *end = arr + size; // 指向数组末尾的下一个位置 while (ptr < end) { sum += *ptr; // 累加当前指针指向的元素值 ptr++; // 移动指针到下一个元素 } return sum; } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum_array(arr, size); printf("Sum of array elements: %d\n", result); return 0; }
2)方法2
#include <stdio.h> int sum_array(int arr[], int size) { int sum = 0; int *ptr = arr; // 指向数组的第一个元素 while (size > 0) { sum += *ptr; // 累加当前指针指向的元素值 ptr++; // 移动指针到下一个元素 size--; // 减少数组元素的数量 } return sum; } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum_array(arr, size); printf("Sum of array elements: %d\n", result); return 0; }
3、递归方法(使用指针)
使用递归通过指针对数组中的元素进行求和,代码如下,
#include <stdio.h> int sum_array_recursive(int *arr, int size) { // 基本情况:如果数组为空,则返回0 if (size == 0) { return 0; } // 递归步骤:计算除最后一个元素外其余元素的和,加上最后一个元素 return sum_array_recursive(arr, size - 1) + arr[size - 1]; } int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); int result = sum_array_recursive(arr, size); printf("Sum of array elements: %d\n", result); return 0; }