函数执行过程 《程序设计》2007.9 int p(int ) main x(2) y(3) int max(int a,int b main x(2) y3) main() max a(2) b(3) nl n2 int x,y; cin >x>>y; main x(2) y(3) cout <max(x,y);} max a(2) b(3) nl n2 int p(int n p n(2) {int s =1,i; main x(2) y(3) if (n 0)return(0); max a(2) b(3) n1(2) n2 for (i=1;i<=n;++i) s*=i;return(s); p n(3) main x(2) y(3) int max(int a,int b max a(2)) b(3) n1(2) n2(6) int n1,n2; n1=p(a);n2=p(b); main x(2) y3) return (n1>n2?n1:n2); 序设计-21
《程序设计》 2007.9 程序设计 - 21 int p( int ); int max( int a, int b ) main() { int x, y; cin >> x >> y; cout << max(x, y);} int p( int n ) { int s =1, i; if (n < 0) return(0); for (i=1;i<=n; ++i) s*=i; return(s); } int max( int a, int b ) { int n1, n2; n1=p(a); n2=p(b); return (n1>n2? n1: n2); } main x(2) y(3) main x(2) y(3) max a(2) b(3) n1 n2 main x(2) y(3) max a(2) b(3) n1 n2 p n(2) s i main x(2) y(3) max a(2) b(3) n1(2) n2 p n(3) s i main x(2) y(3) max a(2) b(3) n1(2) n2(6) main x(2) y(3)
《程序设计》2007.9 第6章过程封装一一函数 %函数 重载函数 自己编写函数 函数模版 函数的使用 变量的作用域 引用参数 变量的存储类别 带默认值的函数 递归函数 内联函数 模块化设计 程序设计-22
《程序设计》 2007.9 程序设计 - 22 v 函数 v 自己编写函数 v 函数的使用 v 引用参数 v 带默认值的函数 v 内联函数 v 重载函数 v 函数模版 v 变量的作用域 v 变量的存储类别 v 递归函数 v 模块化设计
《程序设计》2007.9 引用与引用参数 许多编程语言中调用函数的两种方法是 >按值调用(call一by-value):参数按值调用 传递时,生成参数值副本并传给被调用函 数。副本的改变并不影响调用者的原始变 量值,这样就可以防止意外的副作用影响 开发正确、可靠的软件系统。 >按引用调用(cal一by一referrence):形式参 数是实际参数的一个别名。函数内对形式 参数的修改都是对实际参数的修改。 程序设计-23
《程序设计》 2007.9 程序设计 - 23 v 许多编程语言中调用函数的两种方法是 Ø 按值调用(call—by-value):参数按值调用 传递时,生成参数值副本并传给被调用函 数。副本的改变并不影响调用者的原始变 量值,这样就可以防止意外的副作用影响 开发正确、可靠的软件系统。 Ø 按引用调用(call—by—referrence):形式参 数是实际参数的一个别名。函数内对形式 参数的修改都是对实际参数的修改
《程序设计》2007.9 引用与引用参数 引用参数是其相应的实际参数的别名。要表示函数的参 数是按引用传递的,只要在函数原型中该参数类型后面 加上&即可,在函数首部中列出参数类型时也要使用相 同的规则。例如,函数首部中的下列声明: int &count 表示count-是int的引用。在函数调用中,只要指定变量 名,该变量就会通过引用传递。在被调用函数体中,通 过参数名指定的变量实际上就是引用了调用函数中的原 始变量,被调用函数可以直接修改原始变量。一般来讲, 函数原型和函数首部必须相符。 程序设计-24
《程序设计》 2007.9 程序设计 - 24 v 引用参数是其相应的实际参数的别名。要表示函数的参 数是按引用传递的,只要在函数原型中该参数类型后面 加上&即可,在函数首部中列出参数类型时也要使用相 同的规则。例如,函数首部中的下列声明: int &count 表示count是int的引用。在函数调用中,只要指定变量 名,该变量就会通过引用传递。在被调用函数体中,通 过参数名指定的变量实际上就是引用了调用函数中的原 始变量,被调用函数可以直接修改原始变量。一般来讲, 函数原型和函数首部必须相符
《程序设计》2007.9 引用与引用参数 #include <iostream.h> int squareBy Value(int ) void squareByReference(int&); int main() int x=2,Z=4; cout <<"x ="<<x<<"before squareByValueln" <"Value returned by squareByValue: <squareByValue(x)<<endl <<"x="<<x<<"after squareByValueln"<<endl; cout <<"z="<<z<<"before squareByReference"<endl; squareByReference(z ) cout <<"z="<<z<<"after squareByReference"<endl; return 0; 程序设计-25
《程序设计》 2007.9 程序设计 - 25 #include <iostream.h> int squareByValue( int ); void squareByReference( int& ); int main( ) { int x = 2, z = 4; cout << "x = "<< x << "before squareByValue\n" << "Value returned by squareByValue: " << squareByValue( x ) << endl << "x = "<< x << "after squareByValue\n" << endl; cout << "z =" << z << "before squareByReference" << endl; squareByReference( z ); cout << "z =" << z << "after squareByReference" << endl; return 0; }