欢迎来到天天文库
浏览记录
ID:36320355
大小:493.50 KB
页数:49页
时间:2019-05-09
《(c课件)第4章函数定义与调用(函数1)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在结构化程序设计中,函数是将任务进行模块划分的基本单位。一个函数实现一项功能。在面向对象程序设计中,函数是对数据的一项操作,也是实现一项功能。第四章函数要掌握函数的使用,必须理解函数调用时的内部实现机制,以及与此相关的内存分配机制、变量生命期和作用域。本章还将介绍关于函数重载的概念,介绍递归算法、内联函数、默认参数函数以及编译预处理、工程文件的概念和运行库函数。第4章函数4.1函数的定义与调用4.5作用域与标识符的可见性4.4函数调用机制4.3全局变量和局部变量4.2函数的参数传递,返回值及函数声明4.8编译预处理4.6存储类型
2、与标识符的生命期4.7函数的递归调用4.1函数的定义与调用4.1.1函数概述4.1.2函数的定义4.1.3函数的调用4.1.1函数概述函数是C++程序的基本组成模块。通过函数,可以把一个复杂任务分解成为若干个易于解决的小任务。充分体现逐步细化的设计思想。组成C++程序的若干函数中,有一个称为main()(Winmain())函数,是程序执行的入口,它可以调用其他函数,但不可以被调用。而其他一般函数既可以调用也可以被调用。函数概念的引入:入口函数:4.1.1函数概述main()fun2()fun1()fun3()funa()fun
3、b()func()图4.1函数调用层次关系4.1.1函数概述库函数和自定义函数:库函数或标准函数,是由编译系统预定义的,如一些常用的数学计算函数、字符串处理函数、图形处理函数、标准输入输出函数等。库函数都按功能分类,集中说明在不同的头文件中。用户只需在自己的程序中包含某个头文件,就可直接使用该文件中定义的函数。用户根据需要将某个具有相对独立功能的程序定义为函数,称自定义函数。4.1.2函数的定义无参函数定义格式为:[数据类型]函数名([void]){函数体}说明:数据类型指函数返回值类型,可以是任一种数据类型,默认为返回整型值(
4、但新标准要求写明,不用默认方式)。没有返回值应将返回值类型定义为void。函数名采用合法标识符表示。对无参函数,参数括号中的void通常省略,但括号不能省略。函数体由一系列语句组成。函数体可以为空,称为空函数。1无参函数4.1.2函数的定义//打印一个表头voidTableHead(){cout<<″****************″<5、一个大于5的整数:″<>n;while(n<=5);returnn;}2有参函数有参函数的定义格式为[数据类型]函数名(参数类型1形式参数1[,参数类型2形式参数2,…]{函数体}//返回两个整数中的较大值intmax(inta,intb){return(a>=b?a:b);}有参函数的参数表中列出所有形式参数的类型和参数名称。各参数即使类型相同也必须分别加以说明。形式参数简称形参,只能是变量名,不允许是常量或表达式。voiddelay(longn){inti;for(i=0;i6、一段时间原则:函数在使用时被看成“黑匣子”,除了输入输出外,其他部分可不必关心。从函数的定义看出,函数头正是用来反映函数的功能和使用接口,它所定义的是“做什么”。即明确了“黑匣子”的输入输出部分,输出就是函数的返回值,输入就是参数。因此,只有那些功能上起自变量作用的变量才必须作为参数定义在参数表中;函数体中具体描述“如何做”,因此除参数之外的为实现算法所需用的变量应当定义在函数体内。C++中不允许函数的嵌套定义,即不允许在一个函数中定义另一个函数。问题:定义函数时究竟哪些变量应当作为函数的参数?哪些应当定义在函数体内?4.1.37、函数的调用函数调用:所谓函数调用,就是使程序转去执行函数体。在C++中,除了主函数外,其他任何函数都不能单独作为程序运行。任何函数功能的实现都是通过被主函数直接或间接调用进行的。无参函数的调用格式:函数名()有参函数的调用格式:函数名(实际参数表)其中实际参数简称实参,用来将实际参数的值传递给形参,因此可以是常量、具有值的变量或表达式。【例4.1】输入两个实数,输出其中较大的数4.1.3函数的调用【例4.1】main()函数调用max(2.5,4.7)函数max(2.5,4.7)return4.7主程序后续语句【例4.1】输入两8、个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。程序如下:#includefloatmax(floata,floatb){return(a>=b?a:b);}intmain(){floatx,y;cout<<"输入两个实数:"<
5、一个大于5的整数:″<>n;while(n<=5);returnn;}2有参函数有参函数的定义格式为[数据类型]函数名(参数类型1形式参数1[,参数类型2形式参数2,…]{函数体}//返回两个整数中的较大值intmax(inta,intb){return(a>=b?a:b);}有参函数的参数表中列出所有形式参数的类型和参数名称。各参数即使类型相同也必须分别加以说明。形式参数简称形参,只能是变量名,不允许是常量或表达式。voiddelay(longn){inti;for(i=0;i6、一段时间原则:函数在使用时被看成“黑匣子”,除了输入输出外,其他部分可不必关心。从函数的定义看出,函数头正是用来反映函数的功能和使用接口,它所定义的是“做什么”。即明确了“黑匣子”的输入输出部分,输出就是函数的返回值,输入就是参数。因此,只有那些功能上起自变量作用的变量才必须作为参数定义在参数表中;函数体中具体描述“如何做”,因此除参数之外的为实现算法所需用的变量应当定义在函数体内。C++中不允许函数的嵌套定义,即不允许在一个函数中定义另一个函数。问题:定义函数时究竟哪些变量应当作为函数的参数?哪些应当定义在函数体内?4.1.37、函数的调用函数调用:所谓函数调用,就是使程序转去执行函数体。在C++中,除了主函数外,其他任何函数都不能单独作为程序运行。任何函数功能的实现都是通过被主函数直接或间接调用进行的。无参函数的调用格式:函数名()有参函数的调用格式:函数名(实际参数表)其中实际参数简称实参,用来将实际参数的值传递给形参,因此可以是常量、具有值的变量或表达式。【例4.1】输入两个实数,输出其中较大的数4.1.3函数的调用【例4.1】main()函数调用max(2.5,4.7)函数max(2.5,4.7)return4.7主程序后续语句【例4.1】输入两8、个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。程序如下:#includefloatmax(floata,floatb){return(a>=b?a:b);}intmain(){floatx,y;cout<<"输入两个实数:"<
6、一段时间原则:函数在使用时被看成“黑匣子”,除了输入输出外,其他部分可不必关心。从函数的定义看出,函数头正是用来反映函数的功能和使用接口,它所定义的是“做什么”。即明确了“黑匣子”的输入输出部分,输出就是函数的返回值,输入就是参数。因此,只有那些功能上起自变量作用的变量才必须作为参数定义在参数表中;函数体中具体描述“如何做”,因此除参数之外的为实现算法所需用的变量应当定义在函数体内。C++中不允许函数的嵌套定义,即不允许在一个函数中定义另一个函数。问题:定义函数时究竟哪些变量应当作为函数的参数?哪些应当定义在函数体内?4.1.3
7、函数的调用函数调用:所谓函数调用,就是使程序转去执行函数体。在C++中,除了主函数外,其他任何函数都不能单独作为程序运行。任何函数功能的实现都是通过被主函数直接或间接调用进行的。无参函数的调用格式:函数名()有参函数的调用格式:函数名(实际参数表)其中实际参数简称实参,用来将实际参数的值传递给形参,因此可以是常量、具有值的变量或表达式。【例4.1】输入两个实数,输出其中较大的数4.1.3函数的调用【例4.1】main()函数调用max(2.5,4.7)函数max(2.5,4.7)return4.7主程序后续语句【例4.1】输入两
8、个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。程序如下:#includefloatmax(floata,floatb){return(a>=b?a:b);}intmain(){floatx,y;cout<<"输入两个实数:"<
此文档下载收益归作者所有