数组总结

1.一维数组。
数组是有序数据的集合。
1)类型名 数组名[常量表达式]

常量表达式的值表示元素的个数,即数组长度。

2)常量表达式中不能包含变量,即数组的大小不依赖于程序运行中变量的值,例如下面这个数组的定义是不行的:
“int n;cin  >> n; int a[n];”

改为这样才合法:“const int n=5;int a[n];”

3)数组必须先定义后使用,只能逐个引用数组元素的值而不能一次引用整个数组全部元素的值。

4)初始化。使用数组时要根据要解决问题的形式决定数组是否要初始化。

初始化变量可以用以下的方法,如 int a[10]={ 0 };数组元素全部为零。

int b[5]={1,2};前两个元素为1和2,后续元素自动赋值为零。

特殊情况,如将数组在主函数外定义,自动赋初值。

5)越界问题
注意a[100]的下标为0-99,定义时最好定义大一些,通常比要用的多一个。

使用负数,非整数或大于99的数字都会是数组越界。

 

 

 定义和引用二维数组
具有两个下标的数组称为二维数组。

格式
1. 数据类型 数组名[行数][列数];

2. 数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3, 数据4}}

3. 数据类型 数组名[行数][列数] = {数据1, 数据2, 数据3, 数据4}

4. 数据类型 数组名[][列数] = {数据1, 数据2, 数据3, 数据4}
 
1)如 int a[3][4] ;

根据C++对二维数组的定义方式,可以将a看作一个一维数组,它有3个元素:a[1]、a[2]、a[3],每个元素又是一个包含着4个元素的一维数组。

2)初始化

a. 按行全部初始化:

int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
b. 直接全部初始化,此时第一维度可以省略,第二维度不能省略:

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
c. 对部分元素初始化,此时也是先给前边的元素赋值

int a[3][4] ={{1},{5},{9}}

对全部元素都赋值时,可以不用指定第一维的数组长度。

字符数组
用来存放字符数据的数组是字符数组,字符数组中的一个元素只能存放一个字符。

 

1)定义和初始化字符数组

一般形式为:char c[ ] = { ‘I’,’a’,’m’ } ;   //逐个字符赋给数组中的各个元素

系统会自动根据初值个数确定数组长度。

 

2)用字符数组存放一个字符串中的字符

C++规定了一个“字符串结束标志”,以字符’\0’代表。字符’\0’前面的字符组成有效字符串。对一个字符串常量,系统会自动在所有字符的后面加一个’\0’作为结束符,然后存储到字符数组中。如果有效字符串为10个字符,在内存中它共占有11个字节。

现在我们可以补充一种方法来初始化字符数组:用字符串常量来初始化。

char str[ ] = “China” ;

这种初始化方式与 char str[ ] = { ‘C’,’h’,’i’,’n’,’a’,’\0’ } 等价。

 

3)字符数组的输入和输出

 

C++提供了cin流中的getline函数,用于读入一行字符(或一行字符中前若干个字符),使用安全又方便。

cin.getline(字符数组(或字符指针),字符个数n,终止标识符)

如:cin.getline(ch,20,'/')

作用是读入19个字符(或遇到'/'结束),然后用'\0'补够20个字符存放到字符数组ch中。

 4)初始化
初始化过程中,没有被初始化的数组项编译器会给默认赋值’\0’;

(整数数组没有被初始化的数组项被赋值为0)

例如:char c[5] = {‘a’,’b’,’c’,’d’}; 中 c[4] = ‘\0’; \0即空字符

char c[5]="abcd"字符串初始化数组的话,

字符串后会跟一个空字符,所以字符串的元素数量要少于定义的空间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值