当前位置:文档之家› 第5章 数组

第5章 数组

5.1数组的概念

5.2一维数组的定义和引用5.4用数组名作函数参数5.5字符数组

5.6C++处理字符串的方法

⒈数组的概念

数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。

数组属于构造类型。

⒉数组有两个特点:

1 数组元素的个数必须是确定的,但元素值是可变的;

2 一个数组的所有元素的类型必须是相同的。

⒊数组的分类:

按数组元素类型分:

数值数组:字符数组:指针数组:int a[8],b[4]={2,4,5,9}; char c[ ]=“Thank”;

* int d[3];

按维数来分:

一维数组:

二维数组:int m[2][2]={2,4,5,9};

int a[8],b[4]={2,4,5,9};

int n[2][2][2];

例:存储学生成绩用实型数组mark[100],

存储一行文字用字符数组str[200],

存储一个4*6的矩阵用二维整型数组a[4][6]。其中:①mark、str、a 是数组名。数组名是数组的首地址,是一个地址常量。

②[ ]称为下标运算符。

③下标运算符的个数称为数组的维数

④数组的成员称为数组元素:mark[0],mark[1]

⑤数组元素的类型称为该数组的基类型。

数组元素在内存里顺序存放一维数组的存放:

⒋数组元素在内存的存放形式

mark[0]mark[1]mark[2]mark[3]

...86.592.077.552.0

...

低地址

b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]

123453000H 3002H 3004H

3006H 3008H 300A H

例如:整型数组b b[2][3]={ {1,2,3},

{4,5,6} };

多维数组的元素按行顺序存放。二维数组的存放:地址值数组元素

先存放第1 行的所有元素,再存放第2行的所有元素。

5.2.1定义一维数组:

元素个数

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

定义类型

int a[4];// 表明a数组由4个int型元素组成数组名称

5.2 一维数组的定义和引用

int a[4]; // 表明a数组由4个int型元素组成

其元素分别为:a[0], a[1], a[2], a[3]

其序号从0开始,若存放首地址为2000H,则在内存中为:

必须是常数

a[3]

a[2]

a[1]

a[0]2010H

200CH

2008H

2004H

2000H

C++不允许对数组的大小作动态的定义,即数组的大小不能是变量,必须是常量。

例:数组的定义中常见的错误:

①float a[0];/* 数组大小为0没有意义*/

②int b(2)(3);/* 不能使用圆括号*/

③int k,a[k];/* 不能用变量说明数组大小*/

④int n;

cin>>n;

int a[n];

说明:

(1) 数组名定名规则和变量名相同,遵循标识符定名规则。

(2) 用方括号括起来的常量表达式表示下标值,如下面的写法

是合法的:

int a[10];

int a[2*5];

int a[n*2]; //假设前面已定义了n为常变量

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

例如,在“int a[10];”中,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]。

(4) 常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。

如果要根据不同的数值改变数组的大小,可用常量表达式。如:

#define SIZE 50

void main(void)

{ int art[SIZE];

......

}

一维数组引用格式:

数组名[下标]

a[2]=10; //将10赋给数组中的a[2]元素。

a[5]=a[2]; //将a[2]元素的值赋给a[5]元素cout<

下标表示了元素在数组中的顺序号。只能为整型常量或整型表达式

5.2.2引用一维数组的元素

数组必须先定义,具体引用时(赋值、运算、输出)其元素等同于变量。a[0]

a[1]a[2]a[3]a[4]

a[5]a[6]a[7]a[8]

a[9]

void main(void ){ int i, a[10];

for ( i=0; i<10; i++)

a[i]=i;

for ( i=9; i>=0 ; i--)

cout<

定义

赋值

输出

i=0, a[0]=0i=1, a[1]=1i=2, a[2]=2i=9, a[9]=9

0123

456789

a 输出:9_ _8_ _7_ _6_ _5_ _4_ _3_ _2_ _1_ _0

一维数组初始化方法:

①直接或部分赋值:

int b[4]={1,1,1,1};

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

int c[10 ]={1,4,3,2,4,6};

int d[2]; d[0]=1;d[1]=5;可以只对部分元素赋初值,未赋初值的元素自动取0值。

②用cin

int b[4];a[10];

for(int i=0;i<=3;i++) cin>> b[i];

for(int j=0;k<=3;k++)

cout<< b[i];

for(int k=0;k<=3;k++)

a[k]=1+2*k;

③用scanf:

#include

void main()

{int a[5];

for (int i=0;i<=4;i++)

scanf("%d",&a[i]);

for (int j=0;j<=4;j++)

printf("%d",a[j]);

④用menset( )函数:它可逐个字节的将数组设置为一

个指定的值。

#include

void main()

{int a[25];

float b[50];

memset(a,0,25*size(int));

memset(b,0,50*size(float));

}

5.2.3一维数组的初始化

在定义数组的同时给数组元素赋值。

注意:

1、对数组中的一部分元素列举初值,未赋值的部分是0。

int a[10]= {0,1, 2, 3, 4, 5};

int a[10]= {0,1, 2, 3, 4, 5,0, 0, 0, 0};

2 、不能给数组整体赋值,只能一个一个地赋值。

int a[10]= {0,1,2,.....,9};

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

相关主题
文本预览
相关文档 最新文档