- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 数组
数组是相同数据类型数据的集合。通过数组名和下标可以访问数组中指定的元素。
7.1 一维数组
一维数组只有一个下标,它可用于表示一个线性的数据队列。在程序设计中要先声明数组,对它进行初始化,然后才能使用数组。
7.1.1 一维数组的声明
一维数组的声明要解决三个问题。第一、确定数组的数据类型。第二、给数组定义一个名字,以便在程序中使用。第三、指明数组的大小,也就是数组中元素的个数。声明一维数组的一般形式如下:
数据类型 数组名[常量表达式]={初值表};
7.1.2 一维数组的使用
访问一维数组元素的一般形式是:
数组名[下标表达式]
下标表达式是一个整型表达式。它是一个由整型常量、整型变量以及运算符组成的式子,也可以是返回值为整型值的函数调用。C++规定,数组的下标从0开始,因此对于大小为N的一维数组,其下标的取值范围是0到N-1,其中0称为数组的下界,N-1称为数组的上界。下标表达式的值应该在下标的取值范围之内,否则会产生不可预计的问题。
7.1.3一维数组的初始化
通过在初值表中给出初值可以对数组元素进行初始化。初值用一对花括号界定,初值之间用逗号进行分隔。
例7-4 int y[5]={1,2,3,4,5};
1,2,3,4,5为初值表,该语句把y[0]、y[1]、y[2]、y[3]、y[4] 分别初始化为1、2、3、4、5。
通过初值表中初值的个数决定数组的大小,省略常量表达式。
例7-5 double d[]={1.5,2.3,5.6};
该声明语句省略了常量表达式,数组的长度由初值表中初值的个数决定。它说明了有三个元素的双精度数组d。并且d[0]=1.5, d[1]=2.3, d[2]=5.6。
7.1.4 数组的运算以及数组作为函数参数
1 数组的运算
数组的运算最终都要归结到对数组元素的操作。因此,数组的运算与其元素的数据类型以及系统或程序对该数据类型提供何种操作有关。对于int、float、以及double类型的数组,赋值运算、各种算术运算、++、--等都是允许的,原因是C++提供的这些操作的操作语义支持这些数据类型的运算。例如:
int x[3]={1,2,3},y[3]={4,5,6},z[3];
z[0]= x[0]+y[0];
z[0]= x[0]+y[3];
z[0]= ++x[0] + --y[3];
都是合法操作。但是C++提供的“+”操作却不允许做:z=x+y; 即不允许两个数组直接相加。编译时给出提示:“cannot add two pointers”。所以,要实现数组的直接相加,必须对“+”操作符进行重载。
2 数组作为函数参数
在C++中,参数的传递可以分为两类:一类是参数传值(称为call by value),另一类是参数传址(称为call by reference)。数组作为函数参数时采用的是参数传址。即在实参与形参的虚实结合过程中,传送的是数组的起始地址。先看一个具体的例子。
例7-10数组作为函数参数的例子。
#include iostream.h
void fun(int y[],int n);
int main()
{
int x[5]={1,2,3,4,5};
fun(x,3);
cout输出实参数组endl;
for(int k=0;k5;k++)
coutx[k]=x[k]endl;
return 0;
}
void fun(int y[],int n)
{
cout输出形参数组endl;
for(int i=0;in;i++){
y[i]*=3;
couty[i]=y[i]endl;
}
}
程序的运行结果为:
输出形参数组
y[0]=3
y[1]=6
y[2]=9
输出实参数组
x[0]=3
x[1]=6
x[2]=9
x[3]=4
x[4]=5
从上面的例子可以看出,数组作为函数参数时实参和形参的表现形式是不一样的。
数组作为函数形参时一般需要给出形式数组的声明和形式数组中元素的个数,如在:void fun(int y[],int n)中,int y[]说明y[]是一个形式数组,它不含下标。另外,int n则说明形式数组中元素的个数为n。
在调用函数中,数组名作为实参。如:fun(x,3);中,数组名x作为实参,它的值是数组x[5]的起始地址。
虚实结合过程中,实参x将其值传递给形参y,使y也标识的是x数组的起始地址。同时,将3传递给n,表示仅对x数组的前三个元素进行操作。显然,传递给n的值应该小于5。并且,被调用函数中对数组y中元素的操作实际上就是对实参数组x中元素的操作。
文档评论(0)