文档详情

c++3第三章 函数.ppt

发布:2018-01-18约1.05万字共49页下载文档
文本预览下载声明
第三章 函数 函数的定义与使用 内联函数 带默认形参值的函数 函数重载 C++系统函数 函数的声明 函数是面向对象程序设计中的基本抽象单元,是对功能的抽象 函数声明的语法形式 类型标识符 函数名(形式参数表) { 语句序列 } 函数的声明 形式参数表 type1 name1, type2 name2, ..., typen namen 函数的返回值 由 return 语句给出,例如: return 0 无返回值的函数(void类型),不必写return语句。 函数的调用 调用前先说明函数原型: 在调用函数的说明部分,或程序文件开头所有函数之前,按如下形式说明: 类型标识符 被调用函数名 (含类型说明的形参表) 调用形式: 函数名(实参列表) 嵌套调用 函数不允许嵌套声明,但可以嵌套调用。 递归调用 函数直接或间接调用自身。 例3-1 编写一个求x的n次方的函数 #include iostream.h using namespace std; double power (double x, int n); void main(void) { cout 5 to the power 2 is power(5,2) endl; } double power (double x, int n) { double val = 1.0; while (n--) val = val*x; return(val); } 函数调用的执行过程 嵌套调用 例 输入两个整数,求平方和。 #include iostream.h using namespace std; void main(void) { int a,b; int fun1(int x,int y); cinab; couta、b的平方和:fun1(a,b)endl; } int fun1(int x,int y) { int fun2(int m); return (fun2(x)+fun2(y)); } int fun2(int m) { return (m*m); } 嵌套调用 递归调用 函数直接或间接地调用自身,称为递归调用。 递归过程的两个阶段: 递推:将原问题不断分解为新的子问题,逐渐从未知向已知推进,最终达到已知的条件,即递归结束的条件, 这时递推阶段结束。 4!=4×3! → 3!=3×2! → 2!=2×1! → 1!=1×0! → 0!=1 未知 已知 回归:从已知的条件出发,按照递推的逆过程,逐一求值回归,最后达到递推的开始处,结束回归阶段,完成递归调用。 4!=4×3!=24←3!=3×2!=6←2!=2×1!=2←1!=1×0!=1←0!=1 未知 已知 例 求n! 分析:计算n!的公式如下: 这是一个递归形式的公式,应该用递归函数实现。 源程序: #include iostream.h using namespace std; long fac(int n) { long f; if (n0) coutn0,data error!endl; else if (n==0) f=1; else f=fac(n-1)*n; return(f); } 函数的参数传递机制 ——传递参数值 在函数被调用时才分配形参的存储单元。 实参可以是常量、变量或表达式。实参类型必须与形参相符。 函数的参数传递 指就是形参与实参结合(简称形实结合)的过程。 形实结合的方式有值调用和引用调用。 函数的参数传递机制 ——传递参数值 值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。 这一过程是参数值的单向传递过程,一旦形参获得了值便与实参脱离关系,以后无论形参发生了怎样的改变,都不会影响到实参。 函数的参数传递机制 ——参数值传递举例 例3 输入两整数,交换后输出 #includeiostream.h using namespace std; void Swap(int a, int b); int main( ) {
显示全部
相似文档