数组与函数

文档属性

名称 数组与函数
格式 zip
文件大小 16.5KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2010-09-16 19:28:00

图片预览

文档简介

(共12张PPT)
第十章 数组与函数
主要内容
10.1 一维数组与函数
10.2 二维数组与函数
10.1 一维数组与函数
10.1.1 一维数组元素作实参
调用函数时,数组元素可以作为实参传送给形参,每个数组元素实际上代表内存中的一个存储单元,因此对应的形参必须是类型相同的变量。
数组元素的值可以传送给该变量,在函数中只能对该变量进行操作,而不能直接引用对应的数组元素。
10.1.2 一维数组名作实参
数组名作为函数的参数,在函数间传递的并不是整个数组,而是数组的首地址,换句话说,就是形参数组与实参数组指的是同一个数组。
因此,在被调函数中改变了形参数组的某元素值,其对应的实参数组元素值也跟着发生改变。当数组名作为形参时,其对应的实参可以是指针变量、数组名、地址表达式。
在函数中,可以通过此指针变量来引用调用函数中的对应的数组元素,从而达到对调用函数中对应的数组元素进行操作。
通常对应函数的首部可以是以下三种格式:
(1)fun(int *a)
(2)fun(int a[])
(3)fun(int a[N])
  
例10.1 有以下程序
int fun(int *x,int n)
{
int i,sum=0;
for(i=0;ireturn sum;
}
main()
{ int a[]={1,2,3,4,5},s=0;
s=fun(a,5);
printf(“%d\n”,s);
}
15
注意:
(1)形参x的基类型必须与主函数中的数组a的类型一致。
(2)在fun函数中引用主函数数组a中的元素时,只能使用fun函数中指向主函数数组的指针来引用主函数中的数组元素。
(3)用户定义函数fun的首部也可以写成fun(int x[],int n)或fun(int x[5],int n);
10.1.3 一维数组元素地址作实参
一维数组元素的地址作为函数的实参与一维数组名作为函数的实参有相似之处,它们都是地址值,对应的形参也应当是基类型相同的指针变量。
例10.2 有以下程序
void sum(int p[])
{
p[0]=p[-1]+p[1];
}
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
s=fun(&a[2]);
printf(“%d\n”,a[2]);
}
6
10.2 二维数组与函数
10.2.1 二维数组名作实参
当二维数组名作为实参时,对应的形参必须是一个行指针变量。例如:
#define M 5
#define N 3
main()
{ double s[M][N];

fun(s);
… }
则fun函数的首部可以是以下三种形式之一:
(1)fun(double (*a)[N])
(2)fun(double a[][N])
(3)fun(double a[M][N])
注意:
无论哪种方式,系统都将把a处理成一个行指针。数组名传递给函数的是一个地址值,因此,对应的形参也必定是一个类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能在调用函数时为形参开辟一系列存放数组的存储单元。
10.2.2 指针数组作实参
当指针数组作为实参时,对应的形参应当是一个指向指针的指针。
例如:
#define M 5
#define N 3
 main()
{ double s[M][N], *ps[M];

for(i=0;ifun(s);

}
则fun函数的首部可以是以下三种形式之一:
(1)fun(double *a[M])
(2)fun(double *a[])
(3)fun(double **a)
  因为传送的是一维指针数组,所以形参的定义形式与一维数组名作实参的形式类似。
同课章节目录