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

相关推荐
沐晓时光4 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
SuperByteMaster6 小时前
wfi进入之前没有清除basepri, 导致中断优先级不够,wfi 退不出来
c语言
Navigator_Z6 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
奋斗的阿狸_19869 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
2401_862880829 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
ACP广源盛139246256739 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
沐欣工作室_lvyiyi9 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院
C++ 老炮儿的技术栈10 小时前
static的作用
c语言·c++·人工智能·单片机·c
小小龙学IT12 小时前
Go 语言 cgo 与 C/C++ 互操作深度解析:从 fwlib 直连到工业数采网关实战系列
c语言·c++·golang
老王爱玩车13 小时前
动态内存管理
c语言·开发语言·学习·面试