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

相关推荐
mount_myj1 小时前
长长久久【C语言】
c语言
Legendary_0085 小时前
LDR6500:USB‑C DRP PD协议芯片技术详解与应用实践
c语言·开发语言
dgaf8 小时前
DX12 快速教程(17) —— 立体图标与合并渲染
c语言·c++·3d·图形渲染·d3d12
念恒123069 小时前
进程控制---自定义Shell
linux·c语言
程序员JerrySUN11 小时前
Jetson边缘嵌入式实战课程第二讲:JetPack 和 SDK Manager 是什么
c语言·开发语言·网络·udp·音视频
我不是懒洋洋11 小时前
布谷鸟过滤器:比布隆过滤器更优雅的判重方案
c语言·经验分享
忡黑梨11 小时前
eNSP_从直连到BGP全网互通
c语言·网络·数据结构·python·算法·网络安全
handler0113 小时前
Git 核心指令速查
linux·c语言·c++·笔记·git·学习
学会去珍惜13 小时前
学会C语言可以做什么
c语言·网络编程·游戏开发·嵌入式系统·系统编程
『昊纸』℃14 小时前
Mac上编译C语言的简易方法
c语言·mac·教程·xcode·编译