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

相关推荐
青出于兰2 小时前
C语言| 函数参数传递指针
c语言·开发语言
敲代码的瓦龙2 小时前
C++?多态!!!
c语言·开发语言·c++·windows·后端
whoarethenext3 小时前
使用 C/C++ 和 OpenCV 调用摄像头
c语言·c++·opencv
jz_ddk6 小时前
[学习] C语言多维指针探讨(代码示例)
linux·c语言·开发语言·学习·算法
艾莉丝努力练剑10 小时前
深入详解编译与链接:翻译环境和运行环境,翻译环境:预编译+编译+汇编+链接,运行环境
c语言·开发语言·汇编·学习
xwxh11 小时前
C 语言基础五: 数组 - 练习demo
c语言
Yurko1313 小时前
【C语言】函数指针及其应用
c语言·开发语言·学习
熙曦Sakura14 小时前
【MySQL】C语言连接
c语言·mysql·adb
woho77889914 小时前
伊吖学C笔记(4、循环、自定义函数、二级菜单)
c语言·开发语言·笔记
算法歌者14 小时前
[C]基础16.数据在内存中的存储
c语言