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;
}