C++中修改存储在数组中的数据

C++中修改存储在数组中的数据

在前一个程序清单中,并未将用户定义的数据输入到数组中。给数组元素赋值的语法与给 int 变量赋值的语法很像。
例如,将 2016 赋给 int 变量的代码类似于下面这样:

int thisYear;
thisYear = 2016;

而将 2016 赋给第 4 个数组元素的代码类似于下面这样:

myNumbers [3] = 2016; // Assign 2016 to the fourth element

以下程序演示了如何使用常量指定数组的长度, 还演示了如何在程序执行期间给数组元素赋值:

#include <iostream>
using namespace std;
constexpr int Square(int number) { return number*number; }int main()
{const int ARRAY_LENGTH = 5;// Array of 5 integers, initialized to fiveint myNumbers [ARRAY_LENGTH] = {5, 10, 0, -101, 20};// Note - using a constexprint moreNumbers[Square(ARRAY_LENGTH)] = {25};cout << "Enter index of the element to be changed: ";int elementIndex = 0;cin >> elementIndex;cout << "Enter new value: ";int newValue = 0;cin >> newValue;myNumbers[elementIndex] = newValue;moreNumbers[elementIndex] = newValue;cout << "Element " << elementIndex << " in array myNumbers is: ";cout << myNumbers[elementIndex] << endl;cout << "Element " << elementIndex << " in array moreNumbers is: ";cout << moreNumbers[elementIndex] << endl;return 0;
}

输出:

Enter index of the element to be changed: 3
Enter new value: 101
Element 3 in array myNumbers is: 101
Element 3 in array moreNumbers is: 101

分析:

数组的长度必须是整数,为此,可使用常量来指定(如第 8 行的 ARRAY_LENGTH),也可使用常量表达式来指定(如第 12 行的 Square())。因此,数组 myNumbers 被声明为包含 5 个元素,而数组 moreNumbers 包含 25 个元素。第 14~20 行询问用户要修改哪个数组元素以及要在这个元素中存储什么样的新值。第 22 和 23 行演示了如何修改数组的特定元素,而第 26~29 行演示了如何访问数组的特定元素。请注意,修改改索引为 3 的元素时,实际修改的是第 4 个元素,因为索引从零开始,您必须习惯这一点。

注意:

数组包含 5 个 int 元素时,很多 C++新手将第 5 个值赋给索引为 5 的元素。这超出了数组的边界,因为编译后的代码将试图访问数组的第 6 个元素,这不在定义的范围内。这种错误被称为篱笆柱( fence-post)错误。之所以叫这个名字,是因为建造篱笆时,需要的篱笆柱数总是比区段(section)数多 1。

警告:

上面的程序遗漏了一些必不可少的代码:没有检查用户输入的索引是否在数组的边界内。实际上,该程序应检查 elementIndex 是否为 0~4(对于数组 myNumbers)或 0~24(对于数组 moreNumbers),如果不是,则拒绝修改数组。由于缺少这种检查,用户将被允许输入超越数组边界的值。在最糟糕的情况下,这将导致应用程序崩溃。
使用循环遍历数组元素
按顺序处理数组及其元素时,应使用循环进行遍历。

应该:

务必初始化数组,否则其元素将包含未知值。
使用数组时,务必确保在其边界内。

不应该:

在包含 N 个元素的数组中, 不要使用索引 N 来访问第 N 个元素。
别忘了,使用索引 0 来访问第一个数组元素。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/29052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣初级算法(二分查找)

力扣初级算法(二分法)&#xff1a; 每日一算法&#xff1a;二分法查找 学习内容&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 2.二分查找流程&…

Mageia 9 RC1 正式发布,Mandriva Linux 发行版的社区分支

导读Mageia 9 首个 RC 已发布。公告写道&#xff0c;自 2023 年 5 月发布 beta 2 以来&#xff0c;Mageia 团队一直致力于解决许多顽固问题并提供安全修复和新特性。 新版本的控制中心添加了用于删除旧内核的新功能&#xff0c;该功能在 Mageia 9 中默认自动启用&#xff0c;用…

探秘手机隐藏的望远镜功能:开启后,观察任何你想看的地方

当今的智能手机不仅仅是通信工具&#xff0c;它们蕴藏着各种隐藏的功能&#xff0c;其中之一就是让你拥有望远镜般的观察能力。是的&#xff0c;你没有听错&#xff01;今天我们将探秘手机中隐藏的望远镜功能&#xff0c;这项神奇的功能可以让你打开后&#xff0c;轻松观察任何…

Spring Boot读取yml或者properties配置信息

文章目录 Spring Boot读取yml或者properties配置信息方法一&#xff1a;Value获取基本信息&#xff0c;适用于少量信息方法二&#xff1a;通过注解ConfigurationProperties(prefix "spring.datasource")方法三&#xff1a;通过api Environment Spring Boot读取yml或…

小兔鲜项目 uniapp (1)

目录 项目架构 uni-app小兔鲜儿电商项目架构 小兔鲜儿电商课程安排 创建uni-app项目 1.通过HBuilderX创建 2.通过命令行创建 pages.json和tabBar案例 uni-app和原生小程序开发区别 用VS Code开发uni-app项目 拉取小兔鲜儿项目模板代码 基础架构–引入uni-ui组件库 操…

SSM个人博客项目

文章目录 SSM个人博客系统实现项目介绍 一、准备工作0. 创建项目添加对应依赖1. 数据库设计2. 定时实体类 二、功能实现1.统一功能处理统一返回格式统一异常处理定义登录拦截器 2. 注册登录实现生成获取验证码密码加盐实现注册功能登录功能注销功能 3.登录用户博客列表获取登录…

机器学习笔记之优化算法(十)梯度下降法铺垫:总体介绍

机器学习笔记之优化算法——梯度下降法铺垫&#xff1a;总体介绍 引言回顾&#xff1a;线搜索方法线搜索方法的方向 P k \mathcal P_k Pk​线搜索方法的步长 α k \alpha_k αk​ 梯度下降方法整体介绍 引言 从本节开始&#xff0c;将介绍梯度下降法 ( Gradient Descent,GD ) …

Git stash命令

Git stash Git stash用来暂存当前正在进行的工作&#xff0c; 将工作区还没加入索引库的内容压入本地的Git栈中&#xff0c;在需要应用的时候再弹出来。比如想pull 最新代码&#xff0c;又不想加新commit&#xff1b;或者为了修复一个紧急的bug&#xff0c;先stash&#xff0c…

Vue_02:详细语法以及代码示例 + 知识点练习 + 综合案例(第二期)

2023年8月4日15:25:01 Vue_02_note 在Vue中&#xff0c;非相应式数据&#xff0c;直接往实例上面挂载就可以了。 01_Vue 指令修饰符 什么是指令修饰符呢&#xff1f; 答&#xff1a; 通过 " . " 指明一些指令后缀&#xff0c;不同 后缀 封装了不同的处理操作 —…

基于差分进化优化随机森林的多分类预测,基于DA-RF的分类预测

目录 背影 摘要 随机森林的基本定义 随机森林实现的步骤 差分进化算法原理 差分算法主要参数 差分算法流程图 差分算法优化测试函数代码 完整代码包含数据下载链接: https://download.csdn.net/download/abc991835105/88179071 基于差分进化算法改进的bp神经网络的心理状况评估…

SpringCloud Gateway获取请求响应body大小

前提 本文获取请求、响应body大小方法的前提 : 网关只做转发逻辑&#xff0c;不修改请求、相应的body内容。 SpringCloud Gateway内部的机制类似下图&#xff0c;HttpServer&#xff08;也就是NettyServer&#xff09;接收外部的请求&#xff0c;在Gateway内部请求将会通过Htt…

RISC-V基础之函数调用(四)非叶函数调用(包含实例)

叶函数是指不调用其他函数&#xff0c;也不改变任何非易失性寄存器的函数2。叶函数通常是一些简单的操作&#xff0c;如数学运算或逻辑判断。叶函数的特点是可以通过模拟返回来展开&#xff0c;即不需要保存或恢复寄存器的状态。 非叶函数是指调用其他函数或改变非易失性寄存器…

电力巡检无人机助力迎峰度夏,保障夏季电力供应

夏季是电力需求量较高的时期&#xff0c;随着高温天气的来临&#xff0c;风扇、空调和冰箱等电器的使用量也大大增加&#xff0c;从而迎来夏季用电高峰期&#xff0c;电网用电负荷不断攀升。为了保障夏季电网供电稳定&#xff0c;供电公司会加强对电力设施设备的巡检&#xff0…

ATF(TF-A)安全通告汇总

目录计划如下&#xff0c;相关内容补充中&#xff0c;待完成后进行超链接&#xff0c;敬请期待&#xff0c;欢迎您的关注 1、Advisory TFV-1 (CVE-2016-10319) 2、Advisory TFV-2 (CVE-2017-7564) 3、Advisory TFV-3 (CVE-2017-7563) 4、Advisory TFV-4 (CVE-2017-9607) 5、Ad…

❤ vue3中的RouteRecordRaw

❤ vue3中的RouteRecordRaw RouteRecordRaw 是 Vue Router 4.x 中新增的类型&#xff0c;用于定义路由配置。它是一个 TypeScript 类型 import { RouteRecordRaw } from vue-routerconst routes: Array<RouteRecordRaw> [{path: /,name: Home,component: () > impo…

opencv基础-34 图像平滑处理-2D 卷积 cv2.filter2D()

2D卷积是一种图像处理和计算机视觉中常用的操作&#xff0c;用于在图像上应用滤波器或卷积核&#xff0c;从而对图像进行特征提取、平滑处理或边缘检测等操作。 在2D卷积中&#xff0c;图像和卷积核都是二维的矩阵或数组。卷积操作将卷积核在图像上滑动&#xff0c;对每个局部区…

瑞数系列及顶像二次验证LOGS

瑞数商标局药监局专利局及顶像二次验证 日期&#xff1a;20230808 瑞数信息安全是一个专注于信息安全领域的公司&#xff0c;致力于为企业和个人提供全面的信息安全解决方案。他们的主要业务包括网络安全、数据安全、应用安全、云安全等方面的服务和产品。瑞数信息安全拥有一支…

Python爬虫之JsonPath详解

简介 JsonPath是一种信息抽取类库&#xff0c;是从JSON文档中抽取指定信息的工具 文档 官方文档 JSONPath - XPath for JSON 语法规则 $ 根节点 现行节点 .or[] 取子节点 n/a 取父节点&#xff0c;Jsonpath未支持 .. 就是不管位置&#xff0c;选择所有符…

【资料分享】全志科技T507工业核心板硬件说明书(一)

目 录 前言 1硬件资源 1.1CPU 1.2ROM 1.3RAM 1.4时钟系统 1.5电源 1.6LED

现在转行搞嵌入式找工作难不难啊?

对于应届生来说&#xff0c;嵌入式开发的经验不会有太多&#xff0c;所以要求也不会太高。 嵌入式开发常用的是C语言&#xff0c;所以需要你有扎实的功底&#xff0c;这一点很重要&#xff0c;数据结构算法&#xff0c;指针&#xff0c;函数&#xff0c;网络编程 有了上面的基…