当前位置:
文档之家› 大学计算机程序设计基础(C语言)第6章-函数
大学计算机程序设计基础(C语言)第6章-函数
返回值时,则类型标识符用void关键字。 形式参数表的一般形式为:
类型标识符 形参1,类型标识符 形参2,··· 若省略形式参数表,则称为无参函数。否则称为有参函数。 函数体:包含了说明语句和执行语句。当函数无函数体时,则
为空函数。
函数的返回值
2、函数的返回值
函数的返回值是通过return语句实现的。 格式:return(表达式);或 return 表达式; 语义:当函数执行到return语句时,程序的流程立即返回
long fac(int n) { int i; long k=1;
for(i=1;i<=n;i++) k*=i; return(k); }
main() { int m,n; long cmn;
printf("input m,n:"); scanf("%d%d",&m,&n); cmn=fac(m)/fac(n)/fac(m-n); printf("%ld\n",amn); }
函数声明
函数声明的一般形式: 类型标识符 被调函数的函数名([形式参数表]);
这种包含参数和返回值类型的函数声明称为函数原型。
注意: 主调函数中的函数声明只是声明了要调用的函数返回
值的类型以及形参的个数和类型,不是定义一个函数。 函数声明时指定的函数返回值类型必须与该函数定义
时所指定的类型一致。 在同一个文件中,如果被调函数位于主调函数之前,
数执行过程中遇到任何一个return语句时,都将立即返 回到调用该函数的地方。 ❖ 如果函数中没有return语句,程序的流程一直执行到函 数末尾的右花括号“}”处,然后返回到调用该函数的 地方。 ❖ 为了明确表示“不返回值”,可以用“void”定义“无类 型”(或称“空类型”)函数。 ❖ 如果需要从被调函数中带回一个确定的值,被调函数中 必须包含return 语句。
第6章 函数
本章内容
1 标准函数 2 函数的定义和返回值 3 函数的调用和声明 4 函数的参数 5 函数的嵌套调用和递归 6 变量的存储类别
函数
➢ 一个C语言源程序通常由一个主函数和若干个子函 数组成,各子函数之间的关系是平行的,因此不 能嵌套定义,但能相互调用。一个C语言源程序无 论包含了多少个函数,程序的执行总是从主函数 main()开始,并终止于主函数main()。
函数的声明
在一个函数中调用另一函数(即被调函数)必须具 备以下三个条件:
被调函数必须是已经存在的函数(标准函数或用户 自定义函数)。
如果调用的是标准函数,应该用预处理命令 #include 将该函数对应的头文件包含进来。
如果调用用户自定义函数,可能需要对被调用函数 返回值的类型以及形参的个数和类型作声明。
注意:在函数调用期间,实参和形参对应不同的内存单元,所 以在被调函数中形参的改变不会影响到主调函数的实参,这是 一种“单向传值”调用。
参数举例
#include “stdio.h” int ab(int d) {
if (d<0) d=-d; return(d); }
输入 -5 结果 –5 5
main ( ) { int a, b; scanf (“%d” ,&b); a=ab(b); printf (“%d %d”,b,a); }
到调用该函数的地方(通常称为退出调用函数),并 通过return语句返回函数值。return语句中表达式的 值就是函数返回值。 注意:如果函数有返回值,这个值就应该有一个确定的数 据类型,所以在定义函数首部时应指定函数值的类型。
函数返回值
说明: ❖ 在同一个函数内可根据需要在多处设置return语句,函
/* 函数调用*/
printf (“%d\n”,c);
}
int max (int x,int y) /*函数定义*/
{
return (x>y ? x: y);
}
函数参数
形参:形参出现在函数的定义中,在整个函数体内可以使用, 离开该函数则不能使用; 形参必须是变量,在函数定义时必须进行类型说明; 函数调用时,形参被临时分配存储单元,调用结束后,形参所 占单元被释放。 实参:实参出现在主调函数中,在函数调用时,把实参的值传 递给形参,从而实现主调函数向被调函数的数据传递。 实参可以是常量和有确定值的变量、数组元素或表达式。
关于单向传值注意事项
关于单向传值调用归纳如下:
在被定义的函数中,必须指定形参的类型。 实参与形参应在位置、个数、类型上保持一致。 如果实参为整型而形参为实型,或者相反,则 发生“类型不匹配”的错误。但字符型与整型 可以互相通用。 C语言规定,实参变量对形参变量的数据传递 是“单向值传递”。即数据只能由实参传给形 参,而不能由形参传回给实参。
➢从用户使用的角度将函数分为两种:标准函数(库 函数)和用户自定义函数。
6.1 函数的定义和返回值
1、函数定义的一般形式:
[类型标识符] 函数名([形式参数表])
{ [函数体] }
函数名:由用户命名,命名规则与标识符命名规则相同。 类型标识符: 定义了函数返回值的数据类型。当函数的返回值
是整形或字符型,可省略类型标识符。当函数无
函数的嵌套调用
C语言函数的定义是平行的、独立的,不能嵌套 定义,但可以嵌套调用。也就是说,在调用一个 函数的过程中,被调函数又可以调用另一个函数。
例:
求C
3 9
Cmn
m! n!(m n)!
main( ) long cmn( int m int n ) ;
或者被调函数的返回值是int 型或char型时,则对被调 函数的声明可以省略。
函数举例
例: #include “stdio.h”
main ( )
{ int a, b,c;
ቤተ መጻሕፍቲ ባይዱ
int max (int x, int y); /* 函数说明*/
scanf (“%d %d”,&a,&b);
c=max (a,b);
函数调用格式
函数调用的一般形式:函数名([实参表]) 实参表:可以是常量、变量或表达式。其类型、顺 序和个数必须与函数定义时形参表的一致。对于 无参函数,则省略实参,但括号不能省略。函数 调用表达式可出现在主调函数的任何地方。
函数调用过程图解
函数举例
Cmn=m!/(n!*(m-n)!) 例:试编写一个C程序按下列公式求排列组合问题