文档详情

3 第三章 函数 New.ppt

发布:2017-06-18约1.42万字共72页下载文档
文本预览下载声明
默认形参值的作用域 在相同的作用域内,默认形参值的说明应保持唯一。 例: int add (int x = 5,int y = 6); //原型声明在前 int main() { add(); } int add(int x,int y) { // 此处不能再指定缺省值 return x + y; } 默认形参值的作用域 如果在不同的作用域内,允许说明不同的默认形参。 例: int add(int x=1,int y=2); void main(void) { int add(int x=3,int y=4); add(); //使用局部默认形参值(实现3+4) } void fun(void) { ... add(); //使用全局默认形参值(实现1+2) } * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **********************************2008/10/15 * * * * * * * * * * * #include iostream #include cmath using namespace std; const double PI = 3.14159265358979; int main() { double angle; cout Please enter an angle: ; cin angle; //输入角度值 double radian = angle * PI / 180; //转化为弧度值 cout sin( angle ) = sin(radian) endl; cout cos( angle ) = cos(radian) endl; cout tan( angle ) = tan(radian) endl; return 0; } 运行结果: 30 sin(30)=0.5 cos(30)=0.866025 tan(30)=0.57735 * 标准函数与非标准函数 标准C++函数 C++标准中规定的函数; 各种编译环境普遍支持,因此用标准函数的程序移植性好; 很多标准C++函数继承自标准C,头文件以c开头:cmath,cstdlib,cstdio,ctime…… 非标准C++函数 与特定操作系统或编译环境相关; 在处理和操作系统相关事务时常常需要调用。 * 使用C++系统函数 * 查找系统函数的使用说明 查编译系统的库函数手册 查联机帮助——Visual C++.NET 2008联机帮助的使用方法: 进入MSDN Library for Visual Studio 2008 Development Tools and Languages - Visual Studio - Visual C++ - Reference - Libraries Reference -Run-Time Library - Run-Time Routines by Category 使用C++系统函数 形参和局部变量的存储 为什么不能为形参和局部变量分配固定地址? 局部变量仅在调用它所在的函数时才会生效,函数返回后即失效,分配固定地址造成空间浪费 更重要的是,发生递归调用时,多次调用间的形参和局部变量应彼此独立 需要栈式存储 * 深 度 探 索 栈(Stack) 栈是一种容纳数据的容器 数据只能从栈的一端存入(压入栈) 数据只能从栈的同一端取出(弹出栈) * 深 度 探 索 an ┆ a2 a1 压入栈 弹出栈 栈顶 栈底 运行栈 运行栈是一段区域的内存空间 运行栈分为一个一个栈帧 每个栈帧对应一次函数调用 栈帧中包括: 本次函数调用中的形参值 控制信息 局部变量值 一些临时数据 每次函数调用时,都会有一个栈帧被压入运行栈 返回时,会有一个栈帧被弹出 * 深 度 探 索 运行栈示意图 unsigned fac(unsigned n) { unsigned f; if (n == 0) f = 1; else f = fac(n - 1) * n; return f; } int main() { unsigned n; cin n; unsigned y = fac(n); …… } * n: 0 f: ? n: 1 y: ? n: 1 f: 1 main() fac(1) fac(0) 栈顶 深 度 探 索 * 函数调用的执行过程 函数的声明与使用 main() 调fun() 结束
显示全部
相似文档