值传递举例 int main() { ×=3.0;n=2; y =my_pow(x,n); ex04 my_pow.cpp double my_pow(double x,int k) 17 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 值传递举例 17 double my_pow(double x, int k) { ... ... } int main() { ... ... x = 3.0; n = 2; y = my_pow(x, n); ... ... } ex04_my_pow.cpp
值传递举例 思考 如何实现两个变量的值的交换呢? int main() { int x=3,y=4; cout<“Before swap:x=”<x<“y=”<y<endl; myswap(x,y); cout<“After swap:X=”<<x<<“y=”<y<endl; void myswap(int x,int y) int t x; x=y;y =t; ex04_myswap_01.cpp 18 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 值传递举例 18 void myswap(int x, int y) { int t = x; x = y; y = t; } int main() { int x=3, y=4; cout << “Before swap: x=” << x << “y=” << y << endl; myswap(x, y); cout << “After swap: x=” << x << “y=” << y << endl; } ex04_myswap_01.cpp 思考 如何实现两个变量的值的交换呢?
函数的参数传递机制 ▣传递方式二:引用传递 。引用是一种特殊类型的变量,可看作是变量的别名 通过引用传递,可以实现在改变形参值的同时改变实参值 引用的声明:& int a; int&ra=a;∥声明一个指向a的引用 a=3; cout <<"a="<<a<<endlj ra=5;/∥ra和a共享同一个存储空间 cout <<"a="<<a<<endl; 19 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 函数的参数传递机制 19 ► 引用是一种特殊类型的变量,可看作是变量的别名 ► 通过引用传递,可以实现在改变形参值的同时改变实参值 ► 引用的声明: 传递方式二:引用传递 & int a; int & ra = a; // 声明一个指向 a 的引用 a = 3; cout << "a=" << a << endl; ra = 5; // ra 和 a 共享同一个存储空间 cout << "a=" << a << endl;
引用 。声明一个引用时必须初始化,指向一个存在的对象 引用一旦初始化就不能改变,即不能再指向其它对象 若引用是形参,则在调用函数时才会被初始化,此时形参是实参的一个别名, 对形参的任何操作也会直接作用于实参 void swap_new(int a,int b) int t a;a b;b t; ex04_myswap_02.cpp int main() int x 5,y =8; cout <<"x="<<x<<",y="<<y<<endl; swap_new(x,y); cout <<"x="<<x<<",y="<<y <endl; 20 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 引用 20 ► 声明一个引用时必须初始化,指向一个存在的对象 ► 引用一旦初始化就不能改变,即不能再指向其它对象 ► 若引用是形参,则在调用函数时才会被初始化,此时形参是实参的一个别名, 对形参的任何操作也会直接作用于实参 void swap_new(int & a, int & b) { int t = a; a = b; b = t; } int main() { int x = 5, y = 8; cout << "x=" << x << ", y=" << y << endl; swap_new(x, y); cout << "x=" << x << ", y=" << y << endl; } ex04_myswap_02.cpp
内联函数 ▣内联函数声明与使用 定义与普通函数一样,只需加关键字inline ·与普通函数的区别:编译时会直接用函数体进行替换 。使用内联函数能节省参数传递、控制转移等开销,从而提高执行效率 inline double f(double x)/内联函数 return 2*x*x -1; ex04_inline.cpp ▣ 内联函数通常应该功能简单、规模小、使用频繁 口内联函数体内不建议使用循环语句和switch语句 口有些函数无法定义成内联函数,如递归调用函数 21 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 内联函数通常应该 功能简单、规模小、使用频繁 内联函数体内 不建议使用循环语句和 switch 语句 有些函数无法定义成内联函数,如递归调用函数 内联函数 21 ► 定义与普通函数一样,只需加关键字 inline ► 与普通函数的区别:编译时会直接用函数体进行替换 ► 使用内联函数能节省参数传递、控制转移等开销,从而提高执行效率 内联函数声明与使用 inline double f(double x) // 内联函数 { return 2*x*x - 1; } ex04_inline.cpp