智能网联汽车计算机基础 课件 项目二任务7:函数_第1页
智能网联汽车计算机基础 课件 项目二任务7:函数_第2页
智能网联汽车计算机基础 课件 项目二任务7:函数_第3页
智能网联汽车计算机基础 课件 项目二任务7:函数_第4页
智能网联汽车计算机基础 课件 项目二任务7:函数_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数汽车计算机基础一、课程导入如果把编程比做制造一台机器,函数就好比其零部件。可将这些“零部件”单独设计、调试、测试好,用时拿出来装配,再整体调试。这些“零部件”可以是自己设计制造、别人设计制造或者现在的标准产品。使用函数便于实现模块化设计,便于团队开发,便于使用现有的或别人的程序模块提高编程效能。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结一、课程导入什么是函数?为什么要使用函数?函数有哪些类型?如何自己定义一个函数?如何调用一个函数?函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结二、函数的概念与类型2.1函数的概念函数就是一段可以重复调用的、功能相对独立完整的程序模块,可以定义自己的变量(仅在本函数内有效)拥有自己的存储空间。可以被其他函数或自身调用(主函数除外)。函数是程序的基本组成单位,可以用函数作为程序模块来实现C语言程序。利用函数不仅可以使程序模块化,而且可以使程序设计的简单和直观,提高程序的可读性和可维护性。还可以把程序中的一些计算编成通用函数,以供随时使用。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结二、函数的概念与类型2.2函数的类型(1)从用户使用的角度看,函数有两种类型,分别为标准库函数和用户自己定义的函数。库函数在不同的头文件中声明。比如:math.h头文件中有:sin(x),cos(x),exp(x)(求e^x),fabs(x)(求x的绝对值)等库函数。stdio.h头文件中有:scanf(),printf(),gets(),puts(),getchar(),putchar()等库函数。string.h头文件中有:strcmp(),strcpy(),strcat(),strlen等库函数。(2)函数可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。标准库函数:在C头文件中声明的函数(I/O函数,字符串,字符处理函数,数学函数,接口函数,时间转换和操作函数,动态地址分配函数,目录函数,过程控制函数,字符屏幕和图形功能函数。)户定义的函数:C程序员自定义的函数函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与调用函数定义即函数的实现,是对所要完成功能的操作进行描述的过程,包括函数命名和返回值类型声明、形式参数的类型说明、变量说明和一系列操作语句等。函数和变量一样,必须“先定义,后使用”。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.1无参函数的定义无参函数,是指在主调函数调用被调函数时,主调函数不向被调函数传递数据。无参函数一般用来执行特定的功能,可以有返回值,也可以没有返回值,但一般以没有返回值居多。定义无参函数的一般形式:类型标识符是返回值类型,它可以是C语言中的任意数据类型,例如int、float、char等。函数名是标识符的一种,命名规则和标识符相同。函数名后面的括号()不能少。函数体是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由{}包围。如果有返回值,在函数体中使用return语句返回。return出来的数据的类型要和类型标识符一样。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.1无参函数的定义例如:定义一个函数,计算从1加到100的结果:累加结果保存在变量sum中,最后通过return语句返回。sum是int型,返回值也是int类型,它们一一对应。return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.1无参函数的定义将上面的代码补充完整:C语言不允许函数嵌套定义,也就是说,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main()也是一个函数定义,也不能在main()函数内部定义新函数。所以要将sum放在main外面。函数必须先定义后使用,所以sum要放在main前面。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.1无参函数的定义无返回值函数:有的函数不需要返回值,或者返回值类型不确定(很少见),那么可以用void表示,例如:void是C语言中的一个关键字,表示“空类型”或“无类型”,绝大部分情况下也就意味着没有return语句。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.2有参函数的定义有参函数,是指在主调函数调用被调函数时,主调函数通过参数向被调函数传递数据。在一般情况下,有参函数在执行被调函数时会得到一个值并返回给主调函数使用。定义有参函数的一般形式为:参数本质上也是变量,定义时要指明类型和名称。与无参函数的定义相比,有参函数的定义仅仅是多了一个参数列表。数据通过参数传递到函数内部进行处理,处理完成以后再通过返回值告知函数外部。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结三、用户函数的定义与使用3.2有参函数的定义例如:函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.1函数的参数形参:在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据。实参:函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用。C语言中,实参变量和与其对应的形参变量各占用独立的存储单元。形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。形参和实参有以下几个特点:形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存。实参可以是常量、变量、表达式、函数等。实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.1函数的参数请看下面的例子:函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.2函数的返回值函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过return语句返回。return语句将被调用函数中的一个确定值返回给主调函数。C语言规定,函数返回值的类型是由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。没有定义类型时默认为int型。return语句的一般形式为:例如:函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.2函数的返回值C语言返回值的说明如下:(1)没有返回值的函数为空类型,用void表示。例如:一旦函数的返回值类型被定义为void,就不能再接收它的值了。例如,下面的语句是错误的:为了使程序有良好的可读性并减少出错,凡不要求返回值的函数都应定义为void类型。×函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.2函数的返回值(2)return语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个return语句被执行,所以只有一个返回值。例如:如果a>b成立,就执行returna,returnb不会执行;如果不成立,就执行returnb,returna不会执行。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结四、函数的参数和返回值4.2函数的返回值(2)函数一旦遇到return语句就立即返回,后面的所有语句都不会被执行到了。从这个角度看,return语句还有强制结束函数执行的作用。例如:第4行代码就是多余的,永远没有执行的机会。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.1函数的调用方式所谓函数调用(FunctionCall),就是使用已经定义好的函数。函数调用的一般形式为:实参列表。实参可以是常数、变量、表达式等,多个实参用逗号,分隔。函数名称函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.1函数的调用方式在C语言中,函数调用的方式有多种,例如:函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.2函数的嵌套调用函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义或调用过程中允许出现对另外一个函数的调用。例如:计算sum=1!+2!+3!+...+(n-1)!+n!。分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.2函数的嵌套调用sum()的定义中出现了对factorial()的调用,printf()的调用过程中出现了对sum()的调用,而printf()又被main()调用,它们整体调用关系为:如果一个函数A()在定义或调用过程中出现了对另外一个函数B()的调用,那么我们就称A()为主调函数或主函数,称B()为被调函数。当主调函数遇到被调函数时,主调函数会暂停,CPU转而执行被调函数的代码;被调函数执行完毕后再返回主调函数,主调函数根据刚才的状态继续往下执行。一个C语言程序的执行过程可以认为是多个函数之间的相互调用过程,它们形成了一个或简单或复杂的调用链条。这个链条的起点是main(),终点也是main()。当main()调用完了所有的函数,它会返回一个值(例如return0;)来结束自己的生命,从而结束整个程序。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.3函数原型的声明有参函数的声明形式为:无参函数的声明形式为:注意:函数声明包含函数的首部和一个分号“;”,函数体不用写。有参函数声明时的形参列表只需要把一个个参数类型给出就可以了,可以省略变量名,例如:函数声明可以放在所有函数的前面,如果放在主调函数内,需在调用被调函数之前声明。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.3函数原型的声明例如:编写一个函数,求半径为r的球的体积。球的半径r由用户输入。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结五、函数的调用方式与函数原型5.3函数原型的声明函数的声明在下面3种情况下是可以省略的。①被调函数定义在主调函数之前。②被调函数的返回值是整型或字符型(整型是系统默认的类型)。③在所有的函数定义之前,已在函数外部进行了函数声明。注意:如果被调函数是C语言提供的库函数,调用时不需要作函数声明,但必须把该库函数的头文件用#include命令包含在源程序的最前面。例如,getchar()、putchar()、gets()、puts()等,这样的函数定义是放在stdio.h头文件中的,只要在程序的最前面加上#include<stdio.h>就可以了。同样,如果使用数学库中的函数,则应该用#include<math.h>。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结六、变量作用域和生存期6.1变量的作用域作用域的域英文翻译为scope,作用域即作用范围。作用域关键在于域,作用域影响的是访问权限,出了作用域就无权访问了。作用域有三种:①extern(外部的):这是在函数外部定义的变量的缺省存储方式。extern变量的作用域是整个程序。②static(静态的):在函数外部说明为static的变量的作用域为从定义点到该文件尾部;在函数内部说明为static的变量的作用域为从定义点到该局部程序块尾部。③auto(自动的):这是在函数内部说明的变量的缺省存储方式。auto变量的作用域为从定义点到该局部程序块尾部。函数的参数和返回值课程导入用户函数的定义与调用函数的概念与类型变量作用域和生存期函数的调用方式与函数原型总结六、变量作用域和生存期6.2变量的生存期生存期,关键在于生死期,和其定义的内存区域有关。变量的生存期也有三种,但它们不象作用域那样有预定义的关键字名称。第一种是extern和static变量的生存期,它从main()函数被调用之前开始,到程序退出时为止。第二种是函数参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论