内容正文:
课题序号
授课班级
授课课时
授课形式
理论
授课章节
名称
第6章 函数 6.3 数组作为函数参数
使用教具
计算机、多媒体电视、黑板
教学目的
1. 数组元素作为函数参数
2. 数组名作为函数参数
3. 多维数组作为函数参数
教学重点
1.数组元素作为函数参数2.数组名作为函数参数
教学难点
1.数组名作为函数参数2.多维数组作为函数参数
更新、补
充、删节
内容
课外作业
教学后记
授课主要内容或板书设计
6.3 数组作为函数参数
一、数组元素作为函数参数
二、数组名作为函数参数
三、多维数组作为函数参数
课 堂 教 学 安 排
教学过程
主 要 教 学 内 容 及 步 骤
(一)前堂回顾
(二)导入新课
(三)新授
(三)总结扩展:
(四)作业布置:
main()
{ int a[]={1,2,3,4};int i;for(i=1;i<=4;i++)printf(“%d\t”,a[i]);} 找出上面程序的错误,并说出为什么?
在c语言中,主调函数与被调函数间数据传递有三种方式:
A. 主调函数 被调函数。通过实际参数传递给形式参数。
B. 被调函数 主调函数。通过return语句把函数值返回到主调函数。
C. 主调函数 被调函数。通过全局变量或以数组名作为参数传递。本节课主要来讲一下数组作为函数参数的知识。
6.3 数组作为函数参数
一、数组元素作为函数参数——值传递
数组元素作为函数参数,进行值传递。实际参数的值传递给形式参数。
例如:
#include "stdio.h"
void swap1(int x,int y)
{ int t;
t=x;x=y;y=t;}
void main()
{
int a[2]={1,2};
swap1(a[0],a[1]);
printf("%d,%d,",a[0],a[1]); }
注意:值传递时,必须要通过return语句才能把函数值返回到主调函数。
2、 数组名作为函数参数——地址传递
数组名作为函数参数,进行地址传递,与值传递是不同的。
1、 用数组名作函数,应该在主调函数与被调函数中分别定义数组。
2、 实参数组与形参数组类型应一致。
3、 实参数组与形参数组大小可以一致,也可以不一致;只是将实参数组的首地址传给形参数组。
4、 形参数组也可以不指定大小,在定义数组时在数组名后面跟一个空的[]。为了在被调用后函数处理数组元素的需要,可以另设一个参数,传递数组元素的个数。
5、 用数组名作函数实参时,是把实参数组的起始地址传递给形参数组,这样两个数组就共占同一存储空间。
例如:
#include "stdio.h"
void swap1(int x,int y)
{ int t;
t=x;x=y;y=t;}
void swap2(int z[])
{ int t;
t=z[0];z[0]=z[1];z[1]=t;}
void main()
{ int a[2]={1,2};
int b[2]={3,4};
swap1(a[0],a[1]);
swap2(b);
printf("%d,%d,%d,%d",a[0],a[1],b[0],b[1]);
}
注意:数组名传递时,传递的是首地址,并不关心数组长度,为了使函数明确实参数组的长度,往往在函数中添加一个形参来传递实参数组的长度。
3、 多维数组作为函数参数
可以使用多维数组名作为函数的形参和实参。这里主要以二维数组为例来讲解。
特别需要注意的是:数组名传递的是地址,函数形参中的二维数组可以省略第1维的大小,但不能省略第2维的大小。这里与一维数组名作为实参时,也一样,要多添加一个表示长度的形参进行传递。
本节课主要是讲数组作为参数的几种情况,其中数组名地址传递是重点和难点,希望同学们认真领会。
写出下列程序运行结果。
#include "stdio.h" void main( )
void reverse(int a[],int n) { int b[10]={1,2,3,4,5,6,7,8,9,10};
{ int i, t; int i,s=0; reverse(b,8);
for(i=0;i<n/2;i++) for(i=6;i<10;i++) s+=b[i];
{t=a[i];a[i]=a[n-1-i];a[n-1-i=