




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十章 数组与函数,主要内容,10.1 一维数组与函数 10.2 二维数组与函数,10.1 一维数组与函数,10.1.1 一维数组元素作实参 调用函数时,数组元素可以作为实参传送给形参,每个数组元素实际上代表内存中的一个存储单元,因此对应的形参必须是类型相同的变量。 数组元素的值可以传送给该变量,在函数中只能对该变量进行操作,而不能直接引用对应的数组元素。,10.1.2 一维数组名作实参 数组名作为函数的参数,在函数间传递的并不是整个数组,而是数组的首地址,换句话说,就是形参数组与实参数组指的是同一个数组。 因此,在被调函数中改变了形参数组的某元素值,其对应的实参数组元素值也跟着发生改变。当数
2、组名作为形参时,其对应的实参可以是指针变量、数组名、地址表达式。 在函数中,可以通过此指针变量来引用调用函数中的对应的数组元素,从而达到对调用函数中对应的数组元素进行操作。,通常对应函数的首部可以是以下三种格式: (1)fun(int *a) (2)fun(int a) (3)fun(int aN),例10.1 有以下程序 int fun(int *x,int n) int i,sum=0; for(i=0;in;i+)sum=sum+xi; return sum; main() int a=1,2,3,4,5,s=0; s=fun(a,5); printf(“%dn”,s); ,15,注意:
3、 (1)形参x的基类型必须与主函数中的数组a的类型一致。 (2)在fun函数中引用主函数数组a中的元素时,只能使用fun函数中指向主函数数组的指针来引用主函数中的数组元素。 (3)用户定义函数fun的首部也可以写成fun(int x,int n)或fun(int x5,int n);,10.1.3 一维数组元素地址作实参 一维数组元素的地址作为函数的实参与一维数组名作为函数的实参有相似之处,它们都是地址值,对应的形参也应当是基类型相同的指针变量。,例10.2 有以下程序 void sum(int p) p0=p-1+p1; main() int a=1,2,3,4,5,6,7,8,9,10;
4、s=fun( ,6,10.2 二维数组与函数,10.2.1 二维数组名作实参 当二维数组名作为实参时,对应的形参必须是一个行指针变量。例如: #define M 5 #define N 3 main() double sMN; fun(s); ,则fun函数的首部可以是以下三种形式之一: (1)fun(double (*a)N) (2)fun(double aN) (3)fun(double aMN) 注意: 无论哪种方式,系统都将把a处理成一个行指针。数组名传递给函数的是一个地址值,因此,对应的形参也必定是一个类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能在调用函数时为形参开辟一系列存放数组的存储单元。,10.2.2 指针数组作实参 当指针数组作为实参时,对应的形参应当是一个指向指针的指针。 例如: #define M 5 #define N 3 main() double sMN, *psM; for(i=0;iM;i+) psi=si; fun(s); ,则fun函数的首部可以是以下三种形式之一: (1)fun(double *aM)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论