欢迎来到天天文库
浏览记录
ID:50040726
大小:444.00 KB
页数:136页
时间:2020-03-08
《C 程序设计教程 教学课件 作者 戴水贵 敖志刚 俞海英 编著第7章 函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章函数C语言标准库中有很多已定义的函数,如printf()、scanf()、fabs()、sqrt()等函数,在使用这些库函数时,需要使用文件包含命令(#include)将带有该函数定义的头文件包含到当前C程序中。对于标准库函数中没有提供的函数,常常需要用户自己编写自定义函数。函数是一个自成体系的模块,它可以写成一个独立的源文件,并可编译成.obj文件。其它程序要调用该函数时,可以使用工程文件或文件包含命令(#include)将它们连接在一起就可以了。函数模块化程序设计的基础,把完成某一件事的程序写成函数,供用户重复调用,这样既提高了程序的开
2、发速度,又改善了程序的可读性。在引入函数前,我们写的程序只用主程序(也叫主函数main())。在一个主函数中不能定义同名变量,引入函数后,给变量的定义帯来了更大的空间。一个函数内部不能有同名变量,而不同函数间可以定义同名变量,即有了局部变量的摡念。定义在函数内部的变量叫局部变量,定义在函数体外部定义的变量叫外部变量(以后章节会介绍)。由此可见,引入函数后,给程序设计带来了很多新的概念。这些概念在程序设计中是非常重要的。函数的重点和难点是函数的参数传递问题,大部分书籍都把函数的参数传递分为“单向传递和双向传递”(这种表述方法是不确切的),而没有揭示
3、函数参数传递的本质是地址问题,因而,学完函数后,学生对函数的参数传递掌握的不好。本书将函数调用分为值调用(实参为值)和地址调用(实参为地址)两种:(1).值调用:值调用指的是[实参变量]传递给[形参变量]的是值,这时,既使主程序中的变量和函数中的变量同名,但它们存储在不同的地址上(函数中的变量占用堆栈空间),函数中变量的值发生改变,并不会改变主程序中变量的值。当从函数返回到主程序后,函数中变量的值被释放(静态变量的值不释放),主程序中变量的值没有被改变。(2).地址调用:地址调用指的是[实参变量]传递给[形参变量]的是地址。这时函数中的变量和主程
4、序中的变量是在同一个地址上,即相当于将函数直接指向主程序中要操作的变量,然后进行函数操作,当从函数返回后,主程序中的变量的值被改变。7.1为什么要引入函数(1)模块化main()main(){做事情a(多条语句);{调用函数fun()(一条语句);…………做事情a(多条语句);调用函数fun()(一条语句);}}fun()//函数{做事情a(多条语句);}程序1(不用函数)程序2(用函数)从上面两个程序可以看出用函数的优点:模块化。(2)可定义同名变量、局部变量和外部变量引入函数后,可定义同名变量、局部变量和外部变量,如下列程序1和程序2所示。m
5、ain()main(){{inta;inta;……}}intb;//外部变量(不在函数体内)fun()//函数{inta}程序1(只有主函数)程序2(有主函数和函数)在程序2中,主函数中的变量a和函数中的变量a同名,但不是同一个变量(存储在不同的地址上),其作用域不一样,我们称它们为局部变量(在各自的函数体内起作用)。变量b在函数体外,我们称它为外部变量。7.2主函数与函数、函数与函数之间的关系从下图(图7-1)可以看出主函数与函数、函数与函数之间的关系。一个程序中只能有一个主函数main(),程序从主函数开始执行,主函数可以调用函数(反之不行)
6、,函数之间可以互相调用,函数可以直接自己调用自己或间接自己调用自己(称为递归调用)。main()abcdefhig函数1函数2函数1函数1主函数main()函数图7-1函数调用示意图7.3函数的定义函数的定义格式为:函数的返回类型函数名(形式参数1,形式参数2,…){声明语句;语句系列;}例:写一个将两个整型数x和y相加的函数。intadd(intx,inty)//x,y为形式参数{intz;z=x+y;return(z);//将z的值返回}程序例:一个完整的主函数和函数使用例。intadd(intx,inty)//x+y函数。x,y为
7、形参{intz;z=x+y;return(z);//将z的值返回}main()//主函数{inta=1,b=2,c;c=add(a,b);//调用函数(a,b为实参)printf(“c=%d”,c);}运行结果:c=3说明:定义函数时,形参不占用内存空间;调用函数时,函数中的形参才分配堆栈空间;函数调用结束后,形参所占用的堆栈空间被释放。定义函数时,必须指明形参类型。实参可以是常量、变量或表达式,但必须有确切的值。实参与形参的类型要一致。实参表列中,各实参与形参在个数、顺序、类型上要一一对应,参数间用逗号分隔。定义函数时,要指明函数返回值的类
8、型(默认值为整型,即不指明函数返回值的类型,则函数返回值为整型)。函数的返回值用return语句返回,return是函数中的最后一条语句
此文档下载收益归作者所有