资源描述:
《C语言函数与宏定义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、*1/49第1章函数与宏定义§1.1函数概念§1.2变量作用域和存储类型§1.3内部函数与外部函数§1.4递归函数的设计和调用§1.5预处理§1.6综合范例*2/49§1.1函数概念C语言中,函数可分为两类:一类是由系统定义的标准函数,又称为库函数,其函数声明一般是放在系统的include目录下以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#include<头文件名>命令将库函数信息包含到本程序中。另一类函数是自定义函数*3/49§1.1.1函数定义[存储类型符][返回值类型符]函数名([形参说明表]){函数语句体}*4/49说明:1.[存储
2、类型符]指的是函数的作用范围,它只有两种形式:static和extern。static说明函数只能作用于其所在的源文件,用static说明的函数又称为内部函数。extern说明函数可被其它源文件中的函数调用,用extern说明的函数,又称为外部函数。缺省情况为extern。2.[返回值类型符]指的是函数体语句执行完成后,函数返回的值的类型,如int,float,char等等,若函数无返回值,则用空类型void来定义函数的返回值。缺省情况为int型。*5/493.函数名由任何合法的标识符构成。建议将函数名的命名与函数内容有一定关系。4.[形参说明表]是一系列用逗号分开的每
3、个形参变量说明。如:intx,inty,intz这表示形参变量有三个:x,y,z。它们的类型都是int型。5.函数语句体是放在一对花括号{}中,由局部数据类型描述和功能实现两部分组成。*6/496.函数返回语句的形式有以下两种:①函数无返回值的情况:return;或者什么也不写②函数有返回值的情况:return(表达式的值);在第②种情况下要注意“表达式的值”的类型必须与函数返回值的类型相一致。例如:求两个任意整数的绝对值的和,用函数abs_sum()实现。/*直接调用库函数来计算m和n的绝对值*/intabs_sum(intm,intn){return(abs(m)+
4、abs(n));}/*函数abs()是在头文件math.h中声明的*/*7/49函数定义如下:intabs_sum(intm,intn){if(m<0)m=-m;if(n<0)n=-n;return(m+n);}§1.1.2函数声明和调用1.函数的声明函数声明的一般形式:[存储类型符][返回值类型符]函数名([形参说明表]);如:intabs_sun(intm,intn);*8/492.函数调用函数调用是通过函数调用语句来实现的,分两种形式:①无返回值的情况:函数名([实参表]);②有返回值的情况:变量名=函数名([实参表]);该变量名的类型必须与函数的返回值类型相同。
5、函数调用时都会去执行函数语句中的内容,函数执行完毕后,回到函数的调用处,继续执行下面的语句。*9/49§1.1.3函数的传值方式函数的传值方式:采用实参表将每一个实参的值相应地传递给每一个形参变量,形参变量在接收到实参表传过来的值时,会在内存临时开辟新的空间,以保留形参变量的值,当函数执行完毕时,这些临时开辟的内存空间会被释放,并且形参的值在函数中不论是否发生变化,都不会影响到实参变量的值的变化,这就是函数的传值方式。自定义函数在程序中的使用顺序有两种形式:①先进行函数声明,再进行函数调用,函数定义放在函数调用之后。函数声明在函数调用之前。②函数定义放在函数调用之前。*
6、10/49【例1-1】编程序,通过调用函数abs_sum(),求任意两个整数的绝对值的和。/*exam1_1.c调用函数求两整数绝对值的和*/#includeintabs_sum(intm,intn);main(){intx,y,z;scanf("%d%d",&x,&y);z=abs_sum(x,y);printf("sumis%d",z);}intabs_sum(intm,intn){if(m<0)m=-m;if(n<0)n=-n;returnm+n;}程序运行结果:712sumis19*11/49用传值方式调用函数时,实参也可以是函数调用语句【例
7、1-2】求任意三个数的绝对值的和。/*exam1_2.c调用函数求三个整数绝对值的和*/#includeintabs_sum(intm,intn);main(){intx,y,z,sum;scanf("%d%d%d",&x,&y,&z);sum=abs_sum(abs_sum(x,y),z);printf("sumis%d",sum);}intabs_sum(intm,intn){if(m<0)m=-m;if(n<0)n=-n;returnm+n;}程序运行结果:7125sumis24*12/49注意:对于有返回值的函