文档介绍:第七章函数
《C语言程序设计》
第七章函数
本章主要内容:
概述
函数定义
函数参数和
函数值
函数调用
函数的嵌套调用
本章重点:
函数的定义和调用;函数参数;数组名作为函数的参数;局部变量等。
函数的递归调用
数组作函数参数
全局和局部变量
内部函数和外部函数
本章作业
《C语言程序设计》
概述
main()
{ PrintStar();
PrintMessage();
PrintStar();
}
PrintStar()
{ printf(“**********\n”);
}
PrintMessage()
{ printf(“ Hello\n”);
}
PrintStar函数
PrintMessage函数
main函数
主函数
两个自定义函数
**********
Hello
**********
函数
《C语言程序设计》
说明:
一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位,即以源程序单位进行编译。
一个C程序由一个或多个源程序文件组成。便于调试,提高开发效率。
C程序总是从main函数开始执行,而不管将其写在前面、中间或最后。在调用完其它函数后返回到main函数。main函数是系统定义的。
所有函数都是平行定义的(即不可以嵌套定义),但可以嵌套调用。
《C语言程序设计》
从用户角度看,C语言函数分为两种:
库函数:
是系统提供的已设计好的函数,只要指定了要调用函数所在的库文件,就可以直接调用了。
用户自定义函数:
是用户自己编写的用来解决具体问题的函数。
从函数的形式看,函数分为两类:
无参函数:不需要向函数传递参数。
有参函数:需要向函数传递必要的参数。
本章将要详细介绍的是用户自定义函数。
函数
《C语言程序设计》
函数定义
函数定义的一般形式
类型符函数名(形式参数说明表)
{ 说明部分
语句部分
}
函数
函数首部
函数体
int add(int x,int y)
{ int sum;
sum=x+y;
return sum;
}
完整的函数定义
无参函数定义
空函数定义
int read()
{ int x;
scanf(“%d”,&x);
return x;
}
dummy() { }
《C语言程序设计》
函数参数和函数的值
实参和形参:[]
main()
{ int a=15,b=20,c;
c=max(a+10,b);
printf(“Max=%d”,c);
}
int max(int x,int y)
{ int z;
z=x>y?x:y;
return z;
}
main函数
max函数
形参
实参
15
a
20
b
c
z
x
y
25
20
25
25
《C语言程序设计》
说明:
定义函数时,形参是变量,必须指定类型。形参变量需要的存储单元是在函数被调用时才给它分配,函数结束时予以释放。
实参与形参在个数和类型上应一一对应。
实参可以是常量、变量或表达式。但变量和表达式要有确定的值。如当a=10时:
c=max(7,8); /* ok */
c=max(a,2*4); /* ok */
c=max(a,b); /* error, b没有确定的值*/
C语言中,参数的传递是“值传递”,即单向传递。数据只能由实参传送给形参,而不由形参传回给实参。
函数
《C语言程序设计》
函数的返回值
通常,在调用一个函数时,都希望被调函数能返回一个确定的值。这就是函数的返回值。函数的返回值是通过返回语句return实现的,返回语句的形式为:
return; 或 return 表达式;
前一种形式,函数返回值是不确定的,这时调用者一般对返回值不感兴趣,同时将函数说明成void类型。后一种形式,函数要把“表达式”的值返回给调用者。
函数
《C语言程序设计》
说明:
如果要从被调函数带回一个值,被调函数中必须要有“return 表达式”语句。函数中可以有多个return语句,执行到哪个,哪个就起作用且立即返回调用函数。例如:
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
函数