




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 C+函数 函数定义和调用的格式 函数原形和头文件的作用 参数传递机制、函数重载 函数和变量的作用域 函数模板的设计方法 函数的定义 函数定义的格式 类型修饰符 函数名(形式参数表)函数体 例:double sqare(double n)return n*n; 参 数 有参函数 各参数用逗号分隔,与变量说明方法相同 无参函数 “形式参数表”可以为空,也可用void 返 回 值 有返回值函数 1、“类型修饰符”说明返回值的类型,为 Int 时可 以 省略,但不提倡 2、“函数体”中最后一语句应为 : Return 表达式; 3、函数的返回值应 与“类型修饰符”的说明一致, 兼容的转换 ,不兼容的发生编译错误 无返回值函数 1、“类型修饰符”必须为 Void 2、“函数体”中最后语句可以为:Return; 也可不用 函数调用 函数调用格式函数名(实在参数表) 实 参 与形参在数量、类型、次序上必须一致 类型不一致时,兼容的转换 ,不兼容的发生编译错 误 调 用 方 法 作为表达式 1、必须是有返回值的函数 2、例:result=sqare(5.0); 作为语 句 1、可以没有返回值,有,也被舍弃不用 2、调用语句后加语句结束符构成表达式语句 3、例:Hi(); sqare(5.0); 函数的递归调 用函数直接或间接地调用自身 函数原形与头文件 三种格式 函数定义类型修饰符 函数名(形式参数表)函数体 函数原形类型修饰符 函数名(形式参数表); 函数调用函数名(实在参数表) 一项原则:在调用函数时,函数必须经过 定义或原形说明 头文件 将C+应用程序中各个程序文件里面要调用的用户自定义 函数的原形说明放在一个头文件中,在有函数调用的程序 文件中包含这个头文件即可 多文件应用系统 v第一个文件:描述函数的头文件 v第二个文件:定义函数的程序文件 v第三个文件:调用函数的主程序文件 参数传递 传值把实参表达式的值作为一个副本传递给 形参变量,函数调用不会改 变实 参的值 一维数组参数1、在定义一个一维数组参数时,可以不限定数组元素的个数 2、在调用具有数组参数的函数时,须以单独的数组名为实 在参数 二维数组参数1、在定义一个二(或三)维数组参数时,其第一维可以不限定,但其 余各维都须限定 2、在调用具有数组参数的函数时,须以单独的数组名为实 在参数 3、仅用行下标引用一个二维数组时 ,实际 上引用的是相应行的那 个一维数组 说明:对于数组参数,形参数组是对应 的实参数组的代表,而不是它 的副本,因此,对形参数组的任何改变实际 上就是对实 参数组的改变 可选参数 在说明一个函数时,可以为形式参数表中的最后若干个参数设 定默认值,从而把这些参数设定为可选参数 在调用这个函数时,如果没有给出对应于可选参数的实参,系 统就自动以设定的默认值作为实参传递给这个函数 在调用具有可选参数的函数时,被省略的只能是最后的连续的 若干个可选参数(即不能间隔省略) 可选参数的说明格式如下: 类型修饰符 变量名=默认值(常量表达式) 可选参数应该在函数原形中说明 内联函数 内联函数:在一般函数定义前面加上保留字inline,该函数即被说 明为内联函数,例: inline int add2(int n)return n+2; 内联展开:程序执行时,C+有可能直接调用函数体代码来替代对 函数的调用 函数说明:内联函数的说明也应放置在头文件中 函数重载与名字混成 函数重载:允许定义同名的函数,但重载的函数必须在参数的数量 上或类型上与其他同名函数有所不同 重载函数的调用:如果调用时所用的参数与所定义的各种情况均不 相同,则编译系统会选择与其兼容的最相似的那个函数,并完成必 要的类型转换,如果找不到兼容的函数,则产生编译错误 名字混成:编译系统在处理重载函数时会形成不同的内部名称,这 种方法称为名字混成 在重载函数时必须保证在逐个去掉可选参数后,仍然在参数个数上 或类型上与同名函数有所不同 函数的作用域 全局作用域:不但在定义函数的文件中可以调用,而 且在同一应用系统的其他程序文件中也可调用 文件作用域:说明为static的函数只能被同一文件中 的函数调用,例: static long add(long a,long b)return a+b; 全局变量 全局变量:定义于函数外部的变量称为全局变量 静态生存期:全局变量在应用程序运行的整个期间都有效,如果在定 义时未初始化,则自动初始化为0 文件作用域:全局变量定义时使用static修饰,则只允许同一文件中的 函数访问该变量 跨文件作用域:全局变量定义时未使用static修饰,则还允许同一系统 的其他程序文件中的函数访问该变量 外部说明:extern int a 应用场合 跨文件作用域的全局变量被其他程序文件中的函数访问 变量的声明在函数声明之后,称之为“变量的原形” 局部变量 v局部变量:定义于函数内部的变量 v块作用域:局部变量只允许定义该变量的块中的语句访问,“块”一般 指复合语句,复合语句中位于变量定义之前的语句也不能访问该变量 v局部变量的存储类型: 自动变量:其生存期从变量定义开始,到所在块运行结束时为止 ,用auto修饰或省略之 寄存器变量:也是自动变量的一种,但它是存储于寄存器中的, 只有适合于单个寄存器存放的变量才可声明为寄存器变量,用 register修饰 静态变量:用static修饰的局部变量具有静态生存期,存在于应用 程序的整个运行期间 函数模板(一) 函数模板:一系列相关函数的模型或样板,这些函数的原代码除了因所针 对的数据类型不同而有所差异外,其基本结构相同。 定义格式:template 函数定义 例: template / T被称之为虚拟类型 T Max(T x,T y) return (xy? x:y); 函数模板的实例化:编译系统根据每次调用的实在参数的情况生成适当的 调用代码,并生成相应版本的函数定义,例:couty? x:y); 函数模板(二) 函数模板的强制实例化:在函数调用格式中插入模板的实参表,例: cout(3,5.0); 将生成如下实例: int Max(int x,int y)return(xy?x:y;)/5.0为double型,强制转换为int型 若与模板的某个实例原形相同的函数定义已经存在,则函数定义优先 函数模板的形参表中可以有多个参数,例: template T1 Max(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理礼仪心得体会
- 朔州市朔城区2024-2025学年六年级下学期5月模拟预测数学试题含解析
- 厦门大学嘉庚学院《结构选型与模型设计》2023-2024学年第一学期期末试卷
- 上海欧华职业技术学院《主题阅读(1)》2023-2024学年第二学期期末试卷
- 广东外语外贸大学南国商学院《酿酒工业分析》2023-2024学年第一学期期末试卷
- 江西省赣州市定南县2025届五下数学期末学业质量监测试题含答案
- 赣州师范高等专科学校《语法与翻译》2023-2024学年第一学期期末试卷
- 垦利县2024-2025学年四下数学期末教学质量检测试题含解析
- 贵州健康职业学院《室内环境设计公共空间》2023-2024学年第二学期期末试卷
- 山西省晋城市介休一中2024-2025学年高三(英语试题文)一模试题含解析
- 2022年06月2022年广东肇庆广宁县司法局招考聘用政府雇员名师点拨卷V答案详解版(3套版)
- a320飞机空调系统工作原理与使用维护分析
- 施工机具进场检查验收记录
- HSK标准教程4上第1课课件
- 《液压与气动技术项目教程》高职配套教学课件
- 民俗学概论 第一章 概述课件
- 2022年七步洗手法操作考核评分标准
- 过敏性紫癜的护理PPT课件(PPT 33页)
- 基础降水井封井方案
- 110kv变电站电气主接线设计资料全
- 围术期患者转运专家共识
评论
0/150
提交评论