第五章总结(上)
来源:互联网 发布:结构图软件 编辑:程序博客网 时间:2024/06/14 07:22
5.1函数的定义和调用
在组成一个程序的多个函数中,有且仅有一个是主函数,其函数名main.在C语言中可以从不同的角度对函数进行分类。从函数定义的角度看,函数可分为库函数和用户定义函数两种。
1. 库函数:由系统提供,用户无须定义,只需在程序前包含有该函数原型的头文件即可在程序中直接调用
2. 用户定义函数:由用户按需要编写的函数。
5.1.1 函数的定义
定义函数要完成3项任务:指明函数的入口参数。指明函数执行后的状态。及返回值或返回执行结果:指明函数所需做的操作,即函数体。
每项内容的含义及规定作简单介绍
1.函数名使用户为函数所起的名字,是一个标示符。在同一个程序中。函数名不能相同,也不能与同一作用域中的其他表示符相同。
2.当函数需要返回值时,必须在函数名前著名返回值的类型。即函数类型。在某些情况下,还应说明该函数的存储类型。在TURBO C中,函数类型可以省略,若不注明类型,默认为int类型。
3.形式参数建成形参表,列出该函数所用的全部形式参数,若行参数中有多个形参时,相互间用逗号隔开。
4.函数体用一对大括号“{}”括起来,函数体一般由说明部分和语句部分组成,说明部分主要是对函数内所使用的变量(局部变量)等内容进行定义,语句部分由C语言的基本语句组成,是实现函数功能的主题部分,如果大括号内什么内容也没有,则该函数为空函数。
5.函数的执行流程是
当主函数调用被调用函数时,首先计算实际参数表中各实参的值接着进行参数传递(形式结合),再将控制转移到被调函数,被调用函数的形参传递(形实结合),再将控制转移到被调函数,被调函数的形参以及局部变量开始起作用,然后执行函数体。当函数执行完毕时,即执行RETURN语句。或执行完最后一句,这时调用结束。形参和局部变量的作用消失,控制返回列主调函数继续执行。
5.1.2函数的调用
1.函数的调用形式
实际参数表(简称实参表)中列出调用时的实参,具有多个实参时,相互间用逗号分开。若是无参函数,则可省略实参表。
2.函数的调用方式
在C语言中,有以下几种方式可以调用函数
1.函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算,这种方式要求函数时又返回值的。
2.函数语句:函数调用的一般形式加上分号即构成函数语句。
函数实参:函数作为另一个函数调用的实参实现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是具有返回值的。
3.对被调用函数的声明
在主调函数中调用函数之前应对该被调用函数进行说明,这与使用变量之前要先进行变量说明是一样的。C语言中规定在以下几种情况时可以省略主调函数中对被调函数的说明
▲如果被调函数的返回值是整形或字符型时,可以不对被调函数作说明而直接使用这时系统将自动被调函数返回值按整形处理。
▲当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接作用。
▲如在所有函数定义之前,在函数外预先说明了各个函数类型,则以后的各主函数中可不再对被调很多作说明。
5.2函数的参数与返回值
5.2.1形式参数和实际参数
形参出现在函数定义中,在整个函数体内部都可以使用,离开该函数则不能使用实参出现在主函数中,发生函数调用时,主函数把实参的值传送给被调函数的形参从而实现主调函数的数据传送。
函数的的形参和实参有以下特点
1.形参变量只有在被调用时才分配内存单元,在调用结束时。即该释放所分配的内存单元。形参只有在函数内部有效。函数调用结束返回主调函数后则不能在使用该形参变量。
2.实参可以是常量,变量。表达式。函数等,无论实参是何种类型的量,在进行函数调用时必须具有确定的值,以便把这些值传送给形参。
3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传给实参。因此在函数调用过程中,形参的值会发生改变,而实参的值不会变化。
形参和实参占不同存储单元,形参值改变不影响实参。
5.2.2函数的返回值
对函数值的说明
1.函数的返回值:通过函数中的RETURN语句获得的,RETURT语句将被调用函数中的一个确定值带到主调函数中去。
2.函数值的类型,既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数是指定函数值的类型。
3.如果函数值的类型和RETURT语句中表达式的值不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换,即函数类型决定返回值的类型。
4.如果被调函数中没有RETURT语句,函数并不是不带返回值。而是带回一个不确定的,用可能不希望得到的函数值。
5.为了明确表示“不带会返回值”,应该用VOID“无类型”C或称“空类型”。
- 第五章总结(上)
- 【实训】第五周总结上
- 第五章(笔记总结)
- 第五章总结(下)
- 第五章 初始化与清理(上)
- 第五章—面向对象(上)
- 第五章 java 面向对象(上)
- 第五章 中央处理器 总结
- 第五章 数组总结
- 第五章总结
- 第五章知识点总结
- 总结:第一章~第五章
- 第五章 总结
- Java总结第五章
- 第五章 引用类型(上)
- 读书笔记_GDI+程序设计_第五章(图像)(上)
- 疯狂JAVA讲义---第五章(上):面向对象
- 《JavaScript高级程序设计》学习笔记(第五章)- 上
- VaryByParam,VaryByHeader, VaryByControl, VaryByCustom OutputCache Directive Attributes
- OfficeToPdf .net代码
- linux安装jdk
- TCP/IP协议、端口等相关【2】
- AWR解析报告
- 第五章总结(上)
- 在命令行中通过adb shell am broadcast发送广播通知
- WebKit介绍及总结(三)
- python libvirt 创建 iscsi 存储池、及存储池与iscsi 概念对应关系
- 安装beautifulsoup
- 计算机算法--动态规划计算编辑距离
- 用IP地址反查主机名
- php经典实例-笔记3-web与表单
- The processing instruction target matching "[xX][mM][lL]" is not allowed.