文档介绍:高级程序设计语言
吴 凡
TEL: 83202682
E-mail: cdwf@
第八章函数
电子科技大学通信与信息工程学院
概述
模块化
一个较大的程序一般被划分为若干个程序模块,每个模块来实现某一个特定的功能
C语言中,用函数来实现程序模块的功能
例:()结果:
#include ""
void printstar()
{
printf("****************\n");
}
void print_message()
{
printf("How do you do!\n");
}
main()
{
printstar();
print_message();
printstar();
}
***************How do you do***************
电子科技大学通信与信息工程学院
概述
C程序执行的入口点是main函数,并且程序的执行主体是在main函数内
在main函数中调用其它函数(子函数)完成某项功能,该函数执行完成后,任回到main函数
程序在main函数结束时结束。
所有的子函数的地位都是平等的,不能在子函数中定义函数
电子科技大学通信与信息工程学院
概述
C语言函数分类
从函数定义的角度:
标准函数(库函数):由系统提供,用户可以直接使用(在使用库函数的源文件中应首先#include其对应的头文件)
用户定义函数:由用户定义的函数
从函数形式的角度:
无参函数,例:getchar();
有参函数,例:strcpy(str1,str2);
电子科技大学通信与信息工程学院
函数体
函数定义的一般形式
函数定义的一般形式:类型说明函数名([形式参数说明]){ 定义局部变量 声明外部变量、函数 语句}
形式参数说明的一般形式:类型说明变量1 [,类型说明变量2, ...]
int max(int x, int y)
{
int z;
z = x>y ? x : y;
return(z);
}
声明部分
电子科技大学通信与信息工程学院
函数定义的一般形式
无参函数的定义形式类型说明函数名(){ 声明部分 语句}
有参函数的定义形式类型说明函数名(形式参数说明){ 声明部分 语句}
空函数的定义形式类型说明函数名([形式参数说明]){}
void print_message()
{
printf("How do you do!\n");
}
int max(int x, int y)
{
int z;
z = x>y ? x : y;
return(z);
}
int draw_circle()
{
/*draw a circle*/
}
电子科技大学通信与信息工程学院
int max(int x, int y)
{
int z;
z = x>y ? x : y;
return(z);
}
一般情况下,主调函数与被调函数之间存在数据传递关系(通信关系)
main()
{
int a, b, g;
scanf("%d%d", &a,&b);
g = max(a, b);
printf("Max_num:%d\n",g);
}
函数的参数和函数的值
a
b
z
主调函数
被调函数
主调函数将数据传递给被调函数;——函数参数
被调函数处理完成后,返回主调函数,并将得到的结果返回给主调函数——函数返回值
电子科技大学通信与信息工程学院
#include ""
int max(int x, int y)
{
int z;
z = x>y ? x : y;
return(z);
}
main()
{
int a, b, g;
scanf("%d%d", &a,&b);
g = max(a, b);
printf("Max_num:%d\n",g);
}
形式参数和实际参数
函数参数:用于函数间数据的传递
形式参数(形参):定义函数时使用的参数
实际参数(实参):引用(调用)函数时使用的参数
形式参数
形式参数
实际参数
电子科技大学通信与信息工程学院
形式参数和实际参数
C语言如何实现函数间的数据传递?
传递方式:值传递
单向传递(实参形参)
将实参的值拷贝给形参
...
int max(int x, int y)
{
....
return(z);
}
main()
{
...
g = max( a, b );
...
}
2
5
2
5
主调函数
内存空间
被调函数
内存空间
a
b
x
y
电子科技大学通信与