当前课程知识点:C++语言程序设计基础 > 第6章 数组、指针与字符串(一) > 数组的定义与初始化 > 数组的定义与使用
数组的定义与使用
数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。
例如:int a[10];
表示a为整型数组,有10个元素:a[0]...a[9]
例如: int a[5][3];
表示a为整型二维数组,其中第一维有5个下标(0~4),第二维有3个下标(0~2),数组的元素个数为15,可以用于存放5行3列的整型数据表格。
使用数组元素
必须先声明,后使用。
只能逐个引用数组元素,而不能一次引用整个数组
例如:a[0]=a[5]+a[7]-a[2*3]
例如:b[1][2]=a[2][3]/2
#include <iostream>
using namespace std;
int main() {
int a[10], b[10];
for(int i = 0; i < 10; i++) {
a[i] = i * 2 - 1;
b[10 - i - 1] = a[i];
}
for(int i = 0; i < 10; i++) {
cout << "a[" << i << "] = " << a[i] << " ";
cout << "b[" << I << "] = " << b[i] << endl;
}
return 0;
大家好
欢迎回来继续学习
C++语言程序设计
这一节我们来学习
数组的定义与使用
数组
是具有一定顺序关系的
若干相同变量的集合
那么组成数组的这些变量呢
就称为数组的元素
现在我们就来看看
如何定义和使用数组
那这儿给出的呢
是数组定义的语法形式
最前面的类型说明符
说明的是数组元素
它属于哪个类型
我们说数组是同一种类型的
具有顺序关系的
若干变量的集合体
那么哪一种类型呢
就要在这个类型说明符里说明
接下来后面就要有数组名
这一组数据
它总共有一个名字
叫做数组名
后面若干
方括号里面列出的常量表达式
是什么呢
是数组每一维的下标个数
比如说一维数组
那么括号里的常量表达式
就直接是它元素的个数
如果是二维数组呢
我们知道二维数组
通常用来表示有行有列的表格
那就是有行下标的个数
列下标的个数
那数组的下标呢
不管从哪一维
它都是从0开始数的
比如这里我们看这个例子
我们可以定义一个数组a
大家看
int后面是一个a
a是数组名
那么这个int呢
是这个数组中所有元素
它所属的类型
定义数组名的时候
数组名的构成方法
跟一般变量名的构成方法
是相同的
它要遵守标志符的构成规则
那看这个例子
它方括号里是个10
表示什么
表示下标的个数一共是10个
也就是数组元素的个数是10个
因为它一维数组
下标个数
也就是它数组元素的个数
那怎么样去访问它的每一个元素
就要用数组名
方括号下标的方式
访问它下标为0的元素
那么就写a[0]
访问它下标为9的元素
就写a[9]
我们也可以定义二维数组
比如我们看这个二维数组a
它具有五行三列
行下标个数是5
列下标个数是3
它表示一个有行有列的二维表
每一维的下标都是从0开始数
其中第一维的下标是从0到4
5个下标
第二维下标是从0到2
3个下标
那数组一共有多少个元素呢
三五一十五个
所以它用于存放五行三列的
整数类型数据的表格
定义完数组以后呢
我们可以在程序中使用数组
那么数组肯定是先定义后使用
使用的时候呢
大多数情况下
都是逐个引用数组元素
而不是整个
一次使用整个数组
当然了
我们后面讲
如果我们写C风格的字符串的话
我们可以用字符数组
来存放字符串
这个时候呢
有时候我们会
一次引用整个数组
当做一个串来引用
但是大多数情况下
我们使用数组
是使用它的一个个元素
比如说看这两个表达式中
都是把数组的一个个单个元素
拿出来
参与运算
每一个元素
它就相当于一个变量
能出现一个变量的地方
都可以出现一个
单个的数组元素
下面的例题呢
演示了数组的应用
通过这个例题我们可以体会到
当我们有大批量数据
要处理的时候
用数组不失为一种好的方案
特别是当我们要依次
用同一种算法
去处理大批量数据的时候
那么我们肯定想到了要用循环
我们在前面学过循环结构
就是用同样的算法
依次处理一批数据
那么这个依次的次序从哪儿来
在我们此前的例子中呢
这个次序都体现在
数据元素本身
比如说
我们求1+2+3
一直加到100的和
那么这个数据序列
它的每一个数之间
成一个比如说等差数列的形式
或者有的成等比数列的形式
那元素与元素之间
它本身有次序关系
那我们就可以把这种次序关系
体现在循环控制变量中
去控制这个循环
依次处理这样的数据
可是很多情况下
数据本身
这一批同类型数据本身
它们的值之间
并不存在某一种
有规律的变化关系
那么这个时候
我们怎么用循环
去按次序处理它们呢
次序关系从哪儿来呢
数组就是一种很好的方案
因为数组有下标
于是我们就可以
把这样的数据序列放到数组中
用这个下标
相当于强加给它
或者附加给它
一种次序信息
这样的话呢
循环语句跟数组配合起来
就可以依次处理大批量
同类型的数据了
现在我们来看这个例题
在这个例子中
我们定义了两个数组
数组a 数组b
都是元素为整数类型的数组
分别都是有10个元素
那现在呢
我们需要给数组a和b的每个元素
都赋值
那这个是一个典型的
用同样的算法
依次处理批量数据的问题
所以就适合用循环来做
那用循环来做
用什么来控制这些元素
被依次处理呢
就用数组的下标来控制
所以我们看到
这个for循环呢
用数组的下标
作为控制循环的因素
起始是0
控制条件是2 要小于10
每一次做完循环体内容以后呢
i自己增1
所以我们看到在循环体中
每次给a数组的一个元素赋值
给b数组的一个元素赋值
这样一共执行10次循环
a和b中的元素就都赋值完了
那接下来
我们再输出这两个数组中的内容
也就是要依次遍历
输出这一个数组
这两个数组呢
也是放在for循环里面输出
每一次用这个数组的下标
也就是循环控制变量来控制
从数组中提取一个元素
用来显示
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)