题目:
3.数组元素求和。要求使用"*p++"语法结构来完成数组元素的累加 。
关键点
数组最后一个元素是arr[len-1],所以越界临界 while (p < arr + len)
超出数组范围的第一个位置。这种比较方式可以用来控制循环次数,从而安全地遍历整个数组而不越界
分析:
:
代码
c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
数组元素求和。要求使用"*p++"语法结构来完成数组元素的累加 。
*/
// 遍历求和数组
int sum_arr(int arr[], int len) {
int *p = arr;
int sum = 0;
// 每循环一次累加一次元素并且刚好指针p移动一个位置
while (p < arr + len) {
sum += *p++;
}
return sum;
}
int main(void) {
int arr2[] = { 5,9,8,6,8,7,1,6,4 };
int size = sizeof(arr2) / sizeof(arr2[0]);
int result = sum_arr(arr2, size);
printf("数组元素求和的结果是:%d\n",result);
return 0;
}

解决方案总结:
:
错误积累,编译通过没有报错,但结果不对,检查原因是:在 main 函数中调用 sum_arr(arr2, size) 时没有接收返回值,然后又直接打印 sum_arr(这实际上是打印函数指针地址!!!,而不是结果.所以要记得接收)