【时时三省】(C语言基础)怎样定义和引用一维数组

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一地确定。如上面介绍的学生成绩数组s就是一维数组。有的数组,其元素要指定两个下标才能唯一地确定,如用s₂,₃表示“第2班第3名学生的成绩”,其中第1个下标代表班,第2个下标代表在本班中的学生序号。此时,s就是二维数组。还可以有三维甚至多维数组,如用s₄,₂,₃表示“4年级2班第3名学生的成绩”,此时,s就是三维数组。它们的概念和用法基本上是相同的。熟练掌握一维数组后,对二维或多维数组,很容易举一反二,迎刃而解。

怎样定义一维数组

要使用数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。否则计算机不会自动地把一批数据作为数组处理。例如,下面是对数组的定义:

int a [ 10 ];

它表示定义了一个整型数组,数组名为a,此数组包含10个整型元素。

定义一维数组的一般形式为

类型说明符 数组名[常量表达式];

说明:

( 1 )数组名的命名规则和变量名相同,遵循标识符命名规则。( 2 )在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元意的个数,即数组长度。例如,指定a [ 10 ],表示a数组有10个元素。注意,下标是从0开始的,这10个元素是a [ 0 ],a [ 1 ] ,a [ 2 ] , a [ 3 ] , a [ 4 ] , a [ 5 ] , a [ 6 ] , a [ 7 ] , a [ 8 ],a [ 9 ]。请特别注意,按上面的定义,不存在数组元素a [ 10 ]。

( 3 )常量表达式中可以包括常量和符号常量,如“int a [ 3 + 5 ];”是合法的。不能包含变量,如“inta「n ];”是不合法的。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:

int n ;

scanf ( " % d”,& n );/ /企图在程序中临时输入数组的大小

int a [ n ];

用“int a [ 10 ];”定义了数组a后,在内存中划出一片存储空间,存放了一个有10个整型元素的数组(如果用VisualC++,此空间大小为4×10 = 40字节)。可以看到,用一个

“int a [ 10 ];”,

就相当于定义了10个简单的整型变量,显然简捷方便。

怎样引用一维数组元素

在定义数组并对其中各元素赋值后,就可以引用数组中的元素。应注意:只能引用数下组元素而不能一次整体调用整个数组全部元素的值。

引用数组元素的表示形式为

数组名[下标]

例如,a [ 0 ]就是数组a中序号为0的元素,它和一个简单变量的地位和作用相似。“下标”可以是整型常量或整型表达式。例如下面的赋值表达式包含了对数组元素的引用:

a [ 0 ] = a [ 5 ] + a [ 7 ] - a [ 2×3 ]

每一个数组元素都代表一个整数值。

注意:

定义数组时用到的“数组名[常量表达式]”和引用数组元素时用的“数组名[下标]”形式相同,但含义不同。例如:

int a [ 10 ];/ /前面有int,这是定义数组,指定数组包含10个元素

t = a [ 6 ] ; / /这里的a [ 6 ]表示引用a数组中序号为6的元素

例题:

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

解题思路:

显然首先要定义一个长度为10的数组,由于赋给的值是整数,因此,数组可定义为整型,要赋的值是0 ~ 9,有一定规律,可以用循环来赋值,同样,用循环来输出这10个值,在输出时,先输出最后的元素,按下标从大到小输出这10个元素,这个算法很简单,可以直接写出程序。

编写程序:

运行结果:

程序分析:

第1个for循环使a[0] ~ a [9]的值为0 ~ 9,第2个for循环按a [9] ~ a [0]的顺序输出各元素的值。

应当特别提醒的是:数组元素的下标从0开始,如果用“int a [ 10 ];”定义数组,则最大下标值为9,不存在数组元素a[10]。

一维数组的初始化

为了使程序简洁,常在定义数组的同时给各数组元素赋值,这称为数组的初始化。可以用“初始化列表”方法实现数组的初始化。在定义数组时对全部数组元素赋予初值。例如:

int a [ 10 ] = ( 0,1,2,3,4,5,6,7,8,9 );

将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称为“初始化列表”。

经过上面的定义和初始化之后,a [ 0 ] = 0,a [ 1 ] = 1,a [ 2 ] = 2,a [ 3 ] = 3,a [ 4 ] = 4,a[ 5 ] = 5,a [ 6 ] = 6,a [ 7 ] = 7,a [ 8 ] = 8,a [ 9 ] = 9。

( 2 )可以只给数组中的一部分元素赋值。例如:int a [ 10 ] = ( 0,1,2,3,4 );定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0。

( 3 )如果想使一个数组中全部元素值为0,可以写成int a [ 10 ] = ( 0,0,0,0,0,0,0,0,0,0 );或int a [ 10 ] = ( 0 );

( 4 )在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:

int a [ 5 ] = ( 1,2 , 3 , 4,5 );

可以写成

int a []= ( 1,2,3,4,5 );

在第2种写法中,花括号中有5个数,虽然没有在方括号中指定数组的长度,但是系统会根据花括号中数据的个数确定a数组有5个元素。但是,如果数组长度与提供初值的个数不相同,则方括号中的数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成

int a [ 10 ] = ( 1,2,3,4,5 );

只初始化前5个元素,后5个元素为0。

说明:

如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会自动把它们初始化为0(如果是字符型数组,则初始化为' \0 ',如果是指针型数组,则初始化为NULL,即空指针)。

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

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

相关文章

编译faiss

编译faiss-1.10.0 首先确保自己cmake的版本: cmake --version 确保其版本至少为CMake 3.24.0 or higher is required。 其次安装OpenBLAS: https://github.com/OpenMathLib/OpenBLAS 去这里去安转Openblas内容,然后确保自己的CPU的指令集是存…

Linux 入门:操作系统进程详解

目录 一.冯诺依曼体系结构 一). 软件运行前为什么要先加载?程序运行之前在哪里? 二).理解数据流动 二.操作系统OS(Operator System) 一).概念 二).设计OS的目的 三).如何理解操作系统…

word交叉引用图片、表格——只引用编号的处理方法

交叉引用图片/表格 在“引用”选项卡上的“题注”组中,单击“插入题注”。勾选【从题注中排除标签】。在文中插入题注。 【注 意】 这时候插入的题注只有编号项了。然后手动打上标签【TABLE】,并在标签和编号项之间加上【样式分隔符,AltCt…

rails 8 CSS不起效问题解决

很久没用rails了,最近打算重新复习一下。在配置好环境后,创建了项目,通过脚手架创建了数据库表,和相关的文件。但我发现却没有生成相应的CSS文件,可能是rails8 取消了吧。于是自己手动创建了相应的css文件。但是刷新页…

【nlohmann\json.hpp】‘_snprintf‘: is not a member of ‘std‘

这个问题时有发生但是为啥现在更新了vs2022 后,发生了这些报错:2>(compiling source file ../worker/src/fargo/PacedVideoSenderGo.cpp) 2>D:\XTRANS\thunderbolt\ayame

数据结构--【二叉树】

目录 定义结构体: 初始化: 手动创建一个二叉树: 前序遍历: 中序遍历: 后序遍历 二叉树节点个数: 叶子节点个数: 二叉树第k层节点个数: 二叉树的高度: 查找值为x…

深入解析Linux进程间通信(IPC):机制、应用与最佳实践

引言 在多任务操作系统中,进程间通信(Inter-Process Communication, IPC)是协同工作的核心机制。Linux作为现代操作系统的典范,提供了8种主要IPC方式,从传统的管道到面向网络的套接字,每种方法都暗藏独特的…

2025年“深圳杯”数学建模挑战赛B题-LED显示屏颜色转换设计与校正

LED显示屏颜色转换设计与校正 小驴数模 问题的背景 走在晚风都市,或春日田野,我们都会看到一个色彩斑斓的世界。色彩是我们对世界一种重要感知。什么是色彩,或颜色?颜色是光作用于人眼引起的视觉感知现象,它与物体的…

Java学习手册:Spring MVC 架构与实现

一、Spring MVC 概述 Spring MVC 是 Spring 框架的一个模块,它提供了一套 Web 应用开发的解决方案,实现了 MVC(Model-View-Controller)设计模式。Spring MVC 提供了清晰的分离逻辑层、视图层和控制器层的结构,便于开发…

【TF-BERT】基于张量的融合BERT多模态情感分析

不足:1. 传统跨模态transformer只能处理2种模态,所以现有方法需要分阶段融合3模态,引发信息丢失。2. 直接拼接多模态特征到BERT中,缺乏动态互补机制,无法有效整合非文本模态信息 改进方法:1. 基于张量的跨模…

maven坐标导入jar包时剔除不需要的内容

maven坐标导入jar包时剔除不需要的内容 问题描述解决方案 问题描述 maven坐标导入jar包时剔除不需要的内容 解决方案 Spring Boot 默认使用 Logback&#xff0c;需在 pom.xml 中排除其依赖&#xff1a; <dependency><groupId>org.springframework.boot</gro…

C与指针——输入输出

错误定位 当一个库函数出错时&#xff0c;errno会被重置 perror(const char* s);\\输出s: errno 对应的错误信息 \\如果单独想要错误信息可以 char* e strerror(errno);\\系统错误码转换为对应的错误信息字符串输出缓冲区 一般输出缓冲区满的时候才刷新&#xff0c;也就是…

JSON Web Token 默认密钥 身份验证安全性分析 dubbo-admin JWT硬编码身份验证绕过

引言 在web开发中&#xff0c;对于用户认证的问题&#xff0c;有很多的解决方案。其中传统的认证方式&#xff1a;基于session的用户身份验证便是可采用的一种。 基于session的用户身份验证验证过程&#xff1a; 用户在用进行验证之后&#xff0c;服务器保存用户信息返回sess…

STM32GPIO输出实战-LED模板

STM32GPIO输出实战-LED模板 一&#xff0c;LED控制原理1&#xff0c;LED控制时GPIO的配置2&#xff0c;LED连接方式3&#xff0c;使用HAL库控制LED的常用函数&#xff1a; 二&#xff0c;任意控制LED模板1&#xff0c;Led底层2&#xff0c;代码详细解析 三&#xff0c;实用技巧…

第二十七届华东杯数学建模A 题 跳台滑雪问题 完整思路模型及代码

题目背景 跳台滑雪起源于 19 世纪&#xff0c;是冬季运动会的传统竞技项目。今年亚洲冬季运动会在我国 哈尔滨举行&#xff0c;跳台滑雪项目吸引了包括中国在内的亚洲各国运动健儿踊跃参加&#xff0c;我国运动员取得了优异的成绩。 跳台滑雪融合了速度、力量与精确控制&…

Python之学习笔记(六)

文章目录 1. 字典&#xff08;Dictionary&#xff09;2. 集合&#xff08;Set&#xff09;3. 字典 vs 集合4. 应用场景5. 注意事项 Python中的字典&#xff08; dict&#xff09;和集合&#xff08; set&#xff09;是两种高效且常用的数据结构&#xff0c;适用于不同的场景。…

缓存与数据库的高效读写流程解析

目录 前言1 读取数据的流程1.1 检查缓存是否命中1.2 从数据库读取数据1.3 更新缓存1.4 返回数据 2 写入数据的流程2.1 更新数据库2.2 更新或删除缓存2.3 缓存失效 3 缓存与数据库的一致性问题3.1 写穿&#xff08;Write-through&#xff09;策略3.2 写回&#xff08;Write-back…

PowerShell 备份 Windows10/11 还原计算机驱动程序SOP

一、现在计算机C目录下创建一个新的文件夹名称为 driverbackup 二、打开cmd 以管理员身份执行 dism /online /export-driver /destination: C:\driverbackup 在正常情况下&#xff0c;Windows 10会自动检测您的设备所需的驱动程序&#xff0c;并将其安装到您的PC上。 但是&am…

自监督学习(Self-supervised Learning)李宏毅

目录 Self-supervised Learning简介&#xff1a; BERT : How to use BERT case1&#xff1a;sequence to class 语言积极性OR消极性判断 case2&#xff1a;sequence to sequence句子中的词语词性标注 case3&#xff1a;sequence2 to class两个句子是不是一个为前提一个为…

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…