数据结构函数.
举例
int max(int x, int y)/*函数定义*/ { return x>y?x:y; }
max(a, 3); /*函数调用*/
C语言程序设计 - 第5章 函数 7
参数传递
值传递
实参对形参的数据传递是“值传递”
单向传递
只能把实参的值传递给形参 不能把形参的值传递给实参 对形参的值所作的改变不能带回给实参
main函数结束 函数之间可以相互调用,或调用自身 不能调用main函数 函数之间相互独立,不存在从属关系
C语言程序设计 - 第5章 函数 2
函数定义的一般形式
函数定义形式
返回类型 函数名(参数声明) { 声明部分 语句 }
返回类型、参数、函数体内容都可没有
dummy(){}
/* does ing & returns nothing */
C语言程序设计 - 第5章 函数 16
函数声明举例 (2)
int max(int x, int y); /* 函数声明 */ void main() { /* 不需要再次声明int max(int, int) */
int a, b, c; c = max(a, b); } int max(int x, int y) { return x>y?x:y; }
函数定义举例
int max(int x, int y) {
int z; z = x>y?x:y; return z; } int min(int x, int y) { return x<y?x:y; }
C语言程序设计 - 第5章 函数 5
函数的调用、参数和返回值
函数的参数
形参和实参 参数传递
xy
14 41
14
ab
C语言程序设计 - 第5章 函数 9
return语句
形式
形式一:return; 形式二:return expression;
功能
函数返回语句 结束函数调用 如果需要,还可以带回函数返回值
C语言程序设计 - 第5章 函数 10
函数的返回值 (Return Value)
返回值的说明
函数返回值的类型在函数定义中指定 函数返回值通过函数中的return语句获得 若函数无返回值,则可以没有return语句 return语句后的表达式类型,应与函数返
回值类型相同,或可以兼容赋值;两者类型 不同时,自动做类型转换 函数需要返回值时,若缺少return语句, 或return语句未带返回值,则返回一个不 确定值
函数调用的应用
函数语句
printf("%d\n", i);
函数表达式
(c + d * max(a,b)) % e
函数参数
gcd(max(a,b), min(c, d))
说明
函数调用可以看作同返回类型的表达式使用 同时,函数调用还完成了函数中定义的操作
C语言程序设计 - 第5章 函数 13
C语言程序设计 - 第5章 函数 17
函数声明举例 (3)
C语言程序设计 - 第5章 函数 11
函数的调用
一般形式
函数名(实参表列)
说明
即使没有实参,()也不能省略 多个实参之间用逗号分隔 实参与形参按顺序一一对应,类型应匹配 实参的求值顺序不确定,应避免对此敏感的
调用形式 printf("%d,%d", i, i++);
C语言程序设计 - 第5章 函数 12
实参和形参是不同的变量
具有不同的存储空间 具有不同的生存期和作用域
C语言程序设计 - 第5章 函数 8
参数传递举例 (05-01.C)
void swap(int x, int y) {
int t; t=x, x=y, y=t; } void main() { int a=1, b=4; swap(a, b); }
C语言程序设计 - 第5章 函数 3
函数定义形式的说明
关于“返回类型”
指函数返回值的类型 若省略此项,则认为返回类型是int 若无返回值,则定义返回类型为void
关于“参数声明”
类型 形参名, 类型 形参名, ...
关于“声明部分”
指变量、函数的声明
C语言程序设计 - 第5章 函数 4
C语言程序设计 - 第5章 函数 14
函数的声明 (Declaration)
函数声明的形式即函数原型 在函数调用之前,应对函数进行声明 函数声明可以在主调函数的声明部分,
也可以在函数外部 函数外部的声明,对所有主调函数都起
作用,不需要在主调函数内再次声明 函数的定义也具有声明的作用 库函数的声明包括在头文件(*.h)里,不
函数的返回值 函数的调用
函数调用的形式 函数的声明和函数原型 函数的嵌套调用和递归调用
C语言程序设计 - 第5章 函数 6
函数的参数 (Arguments)
形式参数和实际参数
形参:定义函数时,函数名后()中的参数 实参:调用函数时,函数名后()中的参数 实参可以是常量、变量、表达式、函数调用 实参和形参必须类型相同或赋值兼容
函数原型 (Prototype)
一般形式
类型 函数名(类型1, 类型2, ...); 类型 函数名(类型1 形参1,
类型2 形参2, ...);
举例
int max(int, int); int max(int x, int y); void dummy(); /* 无参函数原型 */ void dummy(void); /* 同上 */
需在源程序里声明
C语言程序设计 - 第5章 函数 15
函数声明举例 (1)
void main() {
int max(int x, int y); /* 函数声明 */ int a, b, c; c = max(a, b); } int max(int x, int y) { return x>y?x:y; }
目录
函数概述 函数定义的一般形式 函数的调用、参数和返回值 局部变量和全局变量 变量的存储类型 内部函数和外部函数
C语言程序设计 - 第5章 函数 1
函数 (Function)
C语言用函数实现程序模块化 一个程序由一个或多个源程序文件组成 一个源程序文件由一个或多个函数组成 C程序的执行从main函数开始,并回到