- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
专业C6讲函数ppt课件
概述 函数是程序按功能划分的基本单位,俗称子程序 函数有三个方面的内容: 函数原型 编译器检查程序中调用函数语句语法正确性的依据 程序员编写调用函数语句的依据 函数定义 函数功能的具体实现 是连接器链接目标代码、函数库的依据 函数调用 实际使用函数,必要时需提供待加工的实际数据(被称为实际参数) 函数原型 语法格式 返回类型 函数名(形式参数表) ; 例如: int rand(); // 产生随机数 double sqrt(double x); // 算术平方根 double pow(double x, double y); // x的y次幂 或只指出形参的数据类型 int rand(void); // 无形式参数 double sqrt(double); // 一个形参(一元函数) double pow(double, double);// 两个形参(二元函数) 函数定义 系统所提供的函数(标准函数) 已经定义且被编译成函数库文件 函数原型在相应的头文件中 只要包含相应的头文件,便可使用这些函数 但这些函数的具体定义成为黑箱 例如: double x=2.0, y; y = sqrt(x);sqrt函数到底是如何将2.0加工成1.414的,不必关心。 用户自定义函数 函数实现 ——— 根据算法实现具体的功能; 是求解问题算法的程序语言表达。 函数调用 将实际参数交给函数进行加工,返回一定的结果 函数的形式参数决定了对实际参数的使用方式 无参数 仅某个表达式的值(包括某变量的值)传递给函数 将变量本身传递给函数 函数的返回类型 无返回 (void) 仅返回一个数值 (存放在临时变量中) 返回一个变量 (已经存在的变量) 3.2.1 函数的形式参数 (1)无形式参数 调用函数时无须提供实际参数,但是表示函数调用的圆括号不能缺少。 例如:n = rand(); // 产生一个随机数 (2)传值型(形式参数为定义变量) 函数调用时,将创建形参变量,意味着 为形式参数变量分配自己的内存空间; 用实际参数(表达式)的值初始化形参变量; 新创建的形参变量存放在栈空间中,函数返回时销毁(与自动变量类似); 函数体内对形参的操作与实参无关。 3.2.1 函数的形式参数 (3)引用型(形式参数为声明引用) 函数调用时,不创建变量,形参为实参的别名,意味着: 形参不另外占用内存空间; 用实参初始化形参的引用声明; 引用型形参“绑定”实参,直至函数返回; 函数体内对形参的操作,就是对实参的操作(与实参相关)。 3.2.1 函数的形式参数 综上所述 函数在调用时,其形式参数变量的定义及初始化,遵循变量定义及初始化的规定; 函数在调用时,其形式参数引用的声明及初始化,遵循引用声明及初始化的规定; 形式参数的生命期从函数调用时起,至函数返回时止。 函数原型中形式参数名称可以缺省,不能缺省的 数据类型 ———— 传值型 数据类型 ———— 引用型 3.2.2 函数的返回类型 函数的返回类型 (1)无返回类型(void) (2)数值返回 数据类型 函数名(参数表); 函数结果存放在一个临时变量中,该临时变量用函数调用表达式本身表示; 该临时变量在参与一次运算后被销毁。 (3)引用返回 数据类型 函数名(参数表); 返回一个已经存在的变量,该变量用函数调用表达式本身表示。 例3.2 求解一元二次方程 问题描述 由于一元二次方程ax2+bx+c=0由其系数唯一确定,可将方程抽象为3个系数a,b,c(数据类型为double); 在实数域中,一元二次方程可能: 无实数根 (类型0) 有两个相同的根 (类型1) 有两个不同的根 (类型2) 需两个变量x1,x2(double型)存放方程可能的根; 还需要一个变量flag(数据类型int)表示方程的类型,以便确定x1与x2是否有意义(x1与x2总是联系某内存单元,总是有其数值的)。 要求设计一个函数(黑箱)根据a,b,c(假定a≠0)确定x1,x2及flag的值。 函数原型设计 函数原型设计方案一 返回类型void。6个参数 a,b,c传值型;x1,x2,flag引用型 void Solver(double a, double b, double c, double x1, double x2, int flag); 函数原型设计方案二 返回类型int。5个参数 int Solver(double a, double b, double c, double x1, double x2); 返回方程的类型 函数定义(以方案二为例) 关于参数单向/双向传递 函数的
文档评论(0)