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

相关推荐
路过刷题1 小时前
第16届蓝桥杯c++省赛c组个人题解
c语言·c++·蓝桥杯
双叶8362 小时前
(C语言)双向链表(教程)(指针)(数据结构)
c语言·开发语言·数据结构·c++·链表
nanxl12 小时前
07_Z-Stack多节点组网及终端消息上报
c语言·单片机·cc2530
是僵尸不是姜丝10 小时前
每日算法:洛谷U535992 J-C 小梦的宝石收集(双指针、二分)
c语言·开发语言·算法
似水এ᭄往昔13 小时前
【C语言】预处理(下)(C语言完结篇)
c语言·开发语言
长流小哥13 小时前
Linux线程属性与多线程开发:API详解与实战代码解析
linux·c语言·开发语言·文件
MessiGo15 小时前
C/C++ 知识点:静态语言与动态语言
c语言·c++·chrome
浅安的邂逅16 小时前
Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量
linux·c语言·vim·makefile·gcc
柒_汐17 小时前
第十五届蓝桥杯C/C++B组省赛真题讲解(分享去年比赛的一些真实感受)
c语言·c++·蓝桥杯·真题·省赛
huofengfeihu17 小时前
【c】-include经典注入问题
c语言·开发语言