我们先回顾一下函数的定义和调用语法格式然后重点讲函数的形参与实参。1 函数C语言程序是由函数组成的一个程序可以由多个函数组成。C语言程序只能有一个主函数即只能有一个main函数。函数分为系统函数和用户自定义函数。scanf( )和printf( )都是系统函数scanf( )是输入函数printf( )是输出函数我们可以直接调用。用户自定义函数就是我们自己定义的函数函数的功能由我们自己编程实现。以下所说的函数都指用户自定义函数。C语言程序可以由多个函数组成但只能有一个主函数即只能有一个main( )函数。不管程序由多少个函数组成程序都是从main( )函数开始执行。2 函数的4种类型函数的定义语法格式数据类型 函数名( 形式参数表 )函数体上述形式参数表是可选项不是每个函数都有形式参数。函数有4种类型类型1无返回值无参数函数void 函数名( ) { }以下语句定义一个无返回值无参数函数无返回值的函数类型是void函数名自己命名如命名为f1类型2无返回值有参数函数void 函数名(形式参数表) { }以下语句定义一个无返回值有参数函数参数就是形式参数无返回值的函数类型是void函数名自己命名如命名为f2只有一个参数为int型参数名为m类型3有返回值无参数函数数据类型 函数名( ) { }如果函数有返回值则函数体中必须要有一句return 值;这个值的类型和函数的数据类型是一致的。比如函数头为: int f3( )则函数体内必定有一句return 整数;以下语句定义一个有返回值无参数函数函数类型为int,说明函数要返回一个整数函数名自己命名如命名为f3没有参数。一般有返回值无参数的函数比较少见因为意义不大。常见的是第4类。类型4有返回值有参数函数数据类型 函数名(形式参数表) { }以下语句定义一个有返回值有参数的函数函数类型为int,说明函数要返回一个整数函数名自己命名如命名为f4有两个整型参数x和y。3 函数的调用定义了函数目的就是为了在其它函数里调用比如在主函数里调用自定义函数。函数的调用语法格式函数名( );或者函数名( 实际参数表 );如果是第1、3类函数无返回值无参数或有返回值无参数则调用时也没有对应的参数。但如果是第2、4类函数无返回值有参数或有返回值有参数则调用时需要给出对应的参数。程序1运行结果就是第1行输出三个*号第2行输出三个#号第3行输出三个*号程序2函数f3的类型是int表示这个函数有一个返回值而且返回值是int型返回一个整数。也就是说函数f3里面必须有一个语句形如return 整数;函数f3的形参两个a和b都是int型。主函数里可以调用函数f3而且可以多次调用。调用时实参要与形参一一对应。比如调用语句为f3(10,20)时实参为10、20当调用语句为f3(100200)时实参为100、200。函数f3的功能是什么就是将两个整数相加返回它们的和。程序2的运行结果为形参只能是变量但实参可以是常数也可以是变量。4 形参与实参函数定义时的参数叫形式参数简称形参调用时的参数叫实际参数简称实参。形参相当于电影剧本里面的角色实参相当于扮演这个角色的演员。一个角色可以由多个演员扮演比如角色叫杨过这个剧本可以翻拍多次就会有多个不同演员来扮演杨过如刘德华、古天乐、黄晓明等。程序3程序3中函数f3的形参为两个int变量:a和b, 实参为两个int变量n和m。当运行时输入100 200则n100m200。调用函数f3(n,m)则将100传给形参a,200传给形参bf3的返回结果是ab即100200也就是说函数f3以300的结果返回主函数则xf3(n,m)的结果就是x300。最后输出300。程序3运行结果5 形参的改变不能影响实参前面提过当调用函数时实参的值传给形参形参的改变不会影响对应的实参。就相当于剧本里的角色杨过断臂了但扮演这个角色的演员并没有断臂。角色不会影响演员当演员把值传给角色后不管角色怎么变电影拍摄完毕演员该干嘛就干嘛没有任何影响。程序4程序4中函数f4的形参为两个int变量:a和b, 实参为两个int变量x和y。一开始x1y2输出1和2。然后调用函数f4(x,y)将实参x的值1和实参y的值2传给形参a和b。函数f4中将形参a的值变为100形参b的值变为200输出a和b的值100和200。然后形参的改变不影响实参回到主函数中再输出x和y依然是1和2。程序4运行结果6 总结1. C语言程序可以由多个函数组成但只能有一个主函数main函数。程序总是从main( )函数开始执行。2. 函数的4种类型(1)无返回值无参数函数(2)无返回值有参数函数(3)有返回值无参数函数(4)有返回值有参数函数。3. 函数定义时的参数叫形式参数简称形参调用时的参数叫实际参数简称实参。4. 形参只能是变量但实参可以是常数也可以是变量。5. 当调用函数时实参的值传给形参。形参的改变不会影响对应的实参。