CExercise_07_1指针和数组_3数组元素求和

题目:

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(这实际上是打印函数指针地址!!!,而不是结果.所以要记得接收)

相关推荐
10000hours8 分钟前
【C语言编译】编译原理和详细过程
linux·c语言·笔记
学习噢学个屁2 小时前
基于51单片机的红外人体感应报警器
c语言·单片机·嵌入式硬件·51单片机
梁下轻语的秋缘3 小时前
每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)
c语言·c++·蓝桥杯
JANYI20184 小时前
Linux 常用指令详解
linux·c语言·网络
梁下轻语的秋缘6 小时前
C/C++滑动窗口算法深度解析与实战指南
c语言·c++·算法
hallo-ooo6 小时前
【C/C++】函数模板
c语言·c++
良木林6 小时前
数据结构小扫尾——栈
c语言·数据结构
百里东风7 小时前
STM32外设-GPIO输出(不含复用)
c语言·stm32·单片机·嵌入式硬件
冉佳驹9 小时前
C语言 ——— 函数
c语言·数据结构·学习·递归·函数·嵌套调用·链式访问
?!71410 小时前
数据结构之哈夫曼树
c语言·数据结构·c++·算法