当前位置:首页 > 行业资料 > 能源与动力工程 > 21天学通C++-第五章-函数
联系方式:北京源智天下科技有限公司第五讲:函数杨章伟e-mail:jtclass@163.com1-2北京源智天下科技有限公司联系方式:课程内容安排•定义函数•函数参数及原型•调用函数•变量的作用域•函数的作用域•函数重载•综合练习•思考和习题1-3北京源智天下科技有限公司联系方式:定义函数•在C++程序中调用函数之前,首先要对函数进行定义。如果调用此函数在前,函数定义在后,就会产生编译错误。为了使函数的调用不受函数定义位置的影响,可以在调用函数前进行函数的定义。这样,不管函数是在哪里定义的,只要在调用前进行函数的定义,就可以保证函数调用的合法性。•函数定义的一般形式如下:•返回类型函数名(参数列表)•{…•函数体•}1-4北京源智天下科技有限公司联系方式:函数定义应用示例•该范例定义一个函数func,该函数判断指定的参数与0的比较结果,大于0则返回值1,等于0则返回0,小于0则返回-1。并在主函数main()中调用该函数,使读者可以看到该函数的执行结果。1-5北京源智天下科技有限公司联系方式:代码清单•1#includeiostream.h•2intfunc(intn)//声明函数func,返回类型为int,参数为intn•3{//函数体•4if(n0)//n0成立•5return1;•6elseif(n==0)//n=0成立•7return0;•8else//n0成立•9return-1;•10}•11voidmain()•12{•13intn;//定义变量•14coutPleaseinputn:endl;•15cinn;//接收用户输入•16cout\ntheresult:func(n)endl;//调用函数•17}1-6北京源智天下科技有限公司联系方式:函数参数及原型•函数一般都带有参数列表,这个参数列表称为形式参数,而在调用函数时,实际的参数和形式参数将会有数据传递。•函数原型也称函数声明或函数模型。在主调函数中,如果要调用另一个函数,则须在本函数或本文件中的开头将要被调用的函数事先作一声明。加工机器(函数)产品(返回值)原材料(实参)1-7北京源智天下科技有限公司联系方式:调用函数•一般来说,C++程序都是从主函数main()开始执行,当执行到函数调用语句时,就会转去执行调用函数,执行后仍然返回到主函数,直至程序结束。当调用一个函数时,整个调用过程分为三步进行,第一步是参数传递,第二步是函数体执行,第三步是返回,即返回到函数调用表达式的位置。1-8北京源智天下科技有限公司联系方式:变量的作用域•变量的作用域是指该变量的作用范围。•在一个函数内部说明的变量是内部变量,其只在该函数范围内有效。也就是说,只有在包含变量说明的函数内部,才能使用被说明的变量,在此函数之外就不能使用这些变量了。因此,这些内部变量被称为局部变量。•与局部变量相对应的,C++中也有这全局变量的概念。全局变量又称为外部变量,其是在在函数外部定义的变量。1-9北京源智天下科技有限公司联系方式:函数的作用域•每个函数都构成了一个函数作用域,函数作用域的概念跟变量的存储位置和生命期有关。函数的参数和在函数中声明并定义的变量即局部变量,其被分配在堆栈上,随着函数的执行而生成,随着函数的退出而消亡。1-10北京源智天下科技有限公司联系方式:函数重载•函数重载是指同一个函数名可以对应着多个函数的实现。例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个操作数的和。其中,一个函数实现是求两个int型数之和,另一个实现是求两个浮点型数之和,再一个实现是求两个复数的和。每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同,这就是函数重载的概念。1-11北京源智天下科技有限公司联系方式:综合练习•该示例将输入的整数按字符串形式逆序输出,要求分别用递归算法和非递归算法实现。如:输入12345,输出:543211-12北京源智天下科技有限公司联系方式:包含头文件2voidprint(inta);//声明函数print3voidprint1(inta);//声明函数print14voidmain()5{6intn;//定义整型变量n7cinn;//接收用户的键盘输入8cout非递归输出:;//输出提示9print(n);//调用非递归函数print10coutendl;//输出换行11cout递归输出:;12print1(n);//调用递归函数print113coutendl;14}15voidprint(inta)//定义非递归函数16{17while(a0)//a0成立则一直执行18{19couta%10;//循环输出位20a=a/10;//a的值为a整除10后的商21}22}23voidprint1(inta)//定义递归函数24{25if(a0)//a0成立则执行26{27couta%10;//循环输出位28print1(a/10);//递归输出29}30}1-13北京源智天下科技有限公司联系方式:思考和习题•C++中,函数定义的格式是怎么样的?需要注意哪些事项?•在main()函数中允许带两个参数,一个为argc,整型数据类型,另一个是指向字符型的指针数组argv[],在具体应用中如何使用?•函数的调用有传值和传地址方式,在使用这两种调用方式时,需要注意什么?•变量的作用域是指该变量的作用范围,其主要包括局部变量和全局变量,这两种形式的变量的使用领域分别是什么?•编写一个递归函数,求输入的两个自然数的最大公约数。
本文标题:21天学通C++-第五章-函数
链接地址:https://www.777doc.com/doc-6125638 .html