函数调用 《程序设计》 cs.stu20119 冷函数调用形式 函数名(实际参数表) eg. max(x, y) 注意: 形式参数和实际参数的个数、排列次序、类型要 完全相同。 >实际参数可以是常量、变量、表达式,甚至是另 个函数调用 >传递方式:值传递 >值传递:函数获得了主调程序参数变量值的拷贝。 被调程序可以改变这些拷贝,但这对主调程序的 环境没有影响。 程序设计-16
《程序设计》 cs.sjtu 2011.9 程序设计 - 16 函数调用 ❖ 函数调用形式 函数名(实际参数表) eg. max( x, y); ❖ 注意: ➢ 形式参数和实际参数的个数、排列次序、类型要 完全相同。 ➢ 实际参数可以是常量、变量、表达式,甚至是另 一个函数调用 ➢ 传递方式:值传递 ➢ 值传递:函数获得了主调程序参数变量值的拷贝。 被调程序可以改变这些拷贝,但这对主调程序的 环境没有影响
《程序设计》 cs.stu20119 函数调用 冷调用方式 作为语句: printstarO 2作为表达式的一部分 如要计算5+4+7 X=p(5)+p(4)+p(7) 3.作为函数的参数 Printstar(p(5)+p(4)+ p(d) 程序设计-17
《程序设计》 cs.sjtu 2011.9 程序设计 - 17 函数调用 ❖ 调用方式 1. 作为语句:printstar(); 2. 作为表达式的一部分 如要计算 5!+4!+7! x=p(5) + p(4) + p(7) 3. 作为函数的参数 Printstar( p(5) + p(4) + p(7));
《程序设计》 cs.stu20119 函数执行过程 在主程序中计算每个实际参数值 用实际参数值初始化形式参数 依次执行函数体的每个语句,直到遇见 return语句 或函数体结束 计算 return后面的表达式的值,用表达式的值构造 一个临时变量 冷回到调用函数,用临时变量置换函数调用,继续主 程序的执行 程序设计-18
《程序设计》 cs.sjtu 2011.9 程序设计 - 18 函数执行过程 ❖ 在主程序中计算每个实际参数值 ❖ 用实际参数值初始化形式参数 ❖ 依次执行函数体的每个语句,直到遇见return语句 或函数体结束 ❖ 计算return后面的表达式的值,用表达式的值构造 一个临时变量 ❖ 回到调用函数,用临时变量置换函数调用,继续主 程序的执行
函数执行过程 《程序设计》 cs.stu20119 int p(int); main x(2) (3) int max( int a, int b) maIn 2) maino max a(2) 2 [int x, y: b(3) n1 cin >>x>> y: maIn (2) y(3) cout < max(x, y)] max a(2)b(3)n1 12 int p(int n [int s=1, i; n(2) if(n<O) return(0): main x(2) y3) for(=1=n;++) s*=i, return(s):1 max a(2) b(3)n1(2) n(3) int max( int a, int b) main x(2 y3) [int n1, n2 n=p(a);n2=p(b); max a(2) b(3)n1(2)m2(6) return(n1>n2? n1: n2): 1 maIn (2) y3) 序设计-19
《程序设计》 cs.sjtu 2011.9 程序设计 - 19 函数执行过程 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)
《程序设计》 cs. stu20119 第6章过程封装一—函数 令函数 重载函数 冷自己绵写函数 函数模板 冷函数的使用 变量的作用域 冷数组作为参数 变量的存储类别 冷带默认值的函数☆递归函数 冷内联函数 冷基于递归的算法 程序设计-20
《程序设计》 cs.sjtu 2011.9 程序设计 - 20 第6章 过程封装--函数 ❖ 函数 ❖ 自己编写函数 ❖ 函数的使用 ❖ 数组作为参数 ❖ 带默认值的函数 ❖ 内联函数 ❖ 重载函数 ❖ 函数模板 ❖ 变量的作用域 ❖ 变量的存储类别 ❖ 递归函数 ❖ 基于递归的算法