第八章 函 数
课题:
第八章 函数 §1~§4
教学目的:
1、掌握函数定义的一般形式
2、掌握函数调用的一般形式
教学重点:
教学难点:
函数定义、调用的一般形式
形式参数和实际参数
步骤一 复习引导
一个C语言源程序可由一个主函数和若干个辅助函数组成。
由主函数调用其他函数,其他函数也可以互相调用。
?
步骤二 讲授新课
§8.1 概述
例8.1
main( )
{ printstar( ); print_message( ); printstar( );
}
printstar( )
{ printf( “ ********** \n”); }
print_message( )
{ printf(“How do you do ! \n”); }
说明:
1、一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位。
2、一个C程序由一个或多个源程序文件组成。这样可以分别编写、分别编译,提高调度效率。
3、C程序的执行从main 函数开始,在main函数中结束整个程序的运行。
4、所有函数都是平行的,即函数不能嵌套定义,函数可以互相调用,但不能调用main函数。
5、从用户使用的角度看,函数有两种:标准函数(库函数)和用户自己定义的函数
6、从函数的形式看,函数分为两类:无参函数和有参函数
§8.2 函数定义的一般形式
(一)无参函数的定义形式
类型标识符 函数名( )
{
函数体(包括声明部分和执行部分)
}
例: printstar( )
{ printf( “ ********** \n”); }
?(二)有参函数定义的一般形式
类型标识符 函数名(形式参数表)
{
函数体(包括声明部分和执行部分)
}
例如:int max(int x, int y){ int z; z=x>y?x:y; return (z);}
?
(三)一个函数可以是空函数
如 dummy( ) { }
?
?
§8.3 函数参数和函数的值
(一)形式参数和实际参数
形式参数:定义函数时函数名后括号中的变量名,简称形参;
实际参数:调用函数时函数名后括号中的表达式,简称实参。
main( )
{ int a,b,c;
scanf(“%d,%d”,&a,&b);
c = max(a, b); /*调用max函数*/
printf(“max=%d”,c);
}
int max(int x ,int y) /*定义max函数*/
{ int z;
z=x>y?x: y;
return(z);
}
?
?
关于形参和实参的说明:
形参在未出现函数调用时,并不占内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
2、实参可以是常量、变量或表达式,如:c = max(3,a+b);但要求它们有确定的值。在调用时将实参的值赋给形参(如果形参是数组名,则传递的是数组的首地址,而不是变量的值。)
3、在被定义的函数中,必须指定形参的类型;
4、实参与形参的类型应一致。
5、C语言规定,实参对形参的数据传递是“值传递”,即单向传递。在内存中,实参单元与形参单元是不同的单元。
(二)函数的返回值
1、return语句
return (表达式);
或:return 表达式;
或:return;
或:函数执行到最后遇到 “}”
?
return语句的用途有二:
(1)用于结束函数的执行并返回到调用者;
(2)用来向调用者传递一个返回值。
注意:该语句对非void函数适用。
?
2、函数值的类型
如: int max(x,y)
char letter(c1, c2)
double min(x, y)
C语言默认函数返回值为int型。
?
3、函数值的类型和return语句中表达式的值不一致,则以函数类型为准;
main() { float a, b; int c; scanf(“%f,%f”,&a,&b); c=max(a,b); printf(“Max is %d\n”,c); } max(float x, float y) { float z; z = x>y? x: y; retu