子程序之间的数据传递 一个子程序所需要的数据往往要从调用者(也是 个子程序)那里获得,计算结果也需要返回给 调用者。 ■子程序之间的数据传递方式: ·全局变量:所有子程序都能访间到的变量。(不好!) 参数: ■形式参数(形参):用于被调用者接受数据 实在参数(实参):用于调用者提供数据 值传递:把实参的值复制一份给形参。 地址或引用传递:把实参的地址传给形参。 返回值机制:返回计算结果
子程序之间的数据传递 ◼ 一个子程序所需要的数据往往要从调用者(也是 一个子程序)那里获得,计算结果也需要返回给 调用者。 ◼ 子程序之间的数据传递方式: • 全局变量:所有子程序都能访问到的变量。(不好!) • 参数: ◼ 形式参数(形参):用于被调用者接受数据 ◼ 实在参数(实参):用于调用者提供数据 ◼ 值传递:把实参的值复制一份给形参。 ◼ 地址或引用传递:把实参的地址传给形参。 • 返回值机制:返回计算结果
C++函数 ■C++函数是用于实现子程序的语言成分 int factorial((intn)/求n的阶乘 int f=1; for (int i=2;i<=n;i++)f *i; return f; 111011 cout <factorial(4)<endl;
C++函数 ◼ C++函数是用于实现子程序的语言成分。 int factorial(int n) //求n的阶乘 { int f=1; for (int i=2; i<=n; i++) f *= i; return f; } ...... cout << factorial(4) << endl;
函数的定义 ■函数的定义格式为: <返回值类型><函数名>(<形式参数表>)<函数体> 。≤<返回值类型>描述了函数返回值的类型, ■可以为任意的C++数据类型。 当返回值类型为void时,它表示函数没有返回值。 。<函数名>用于标识函数的名字,用标识符表示。 <形式参数表>描述函数的形式参数,由零个、一个或多 个形参说明(用逗号隔开)构成,形参说明的格式为: <类型><形参名>
函数的定义 ◼ 函数的定义格式为: <返回值类型> <函数名> (<形式参数表>) <函数体> • <返回值类型>描述了函数返回值的类型, ◼ 可以为任意的C++数据类型。 ◼ 当返回值类型为void时,它表示函数没有返回值。 • <函数名>用于标识函数的名字,用标识符表示。 • <形式参数表>描述函数的形式参数,由零个、一个或多 个形参说明(用逗号隔开)构成,形参说明的格式为: <类型> <形参名>
·<函数体>为一个<复合语句>,用于实现相应函 数的功能。 函数体内可以包含return语句,格式为: ●return<表达式>: ·return;/返回值类型为void 当函数体执行到return语句时,函数立即返回到调用 者。如果有返回值,则把返回值带回给调用者。 如果return中的<表达式>的类型与函数<返回值类 型>不一致,则进行隐式类型转换,基本原则为:把 <表达式>转成<返回值类型> 对于返回值类型为Void的函数,函数体中也可以没有 return语句,执行完最后一个语句返回。 注意:在函数体中不能用goto语句转出函数体
• <函数体> 为一个<复合语句>,用于实现相应函 数的功能。 ◼ 函数体内可以包含return语句,格式为: • return <表达式>; • return; //返回值类型为void ◼ 当函数体执行到return语句时,函数立即返回到调用 者。如果有返回值,则把返回值带回给调用者。 ◼ 如果return中的<表达式>的类型与函数<返回值类 型> 不一致,则进行隐式类型转换,基本原则为:把 <表达式>转成<返回值类型> 。 ◼ 对于返回值类型为void的函数,函数体中也可以没有 return语句,执行完最后一个语句返回。 ◼ 注意:在函数体中不能用goto语句转出函数体
函数定义的例子 double power(double x,intn)/求x的n次幂 if (x =0)return 0; double product=1.0; if(n>=0) while (n 0) { product *x; n-- else while (n 0) { product /x; n++: } return product;
double power(double x, int n) //求x的n次幂 { if (x == 0) return 0; double product=1.0; if (n >= 0) while (n > 0) { product *= x; n--; } else while (n < 0) { product /= x; n++; } return product; } 函数定义的例子