调用是传值调用。
【2.20】 分析下面程序的输出结果。
#include 答:运行结果是 10 20 因为函数f参数是变量的引用,对它的调用是传地址调用,函数f调用后,k的值变为10,而m是对函数f的引用,m被赋值20,k的值也变为20. 【2.21】 举例说明可以使用const替代#define以消除#define的不安全性。 答:例如: #include { cout< 上面程序的运行结果是9而不是12,但很容易被认为是12。 如果用const替代#define就能得到正确结果,从而消除了#define的不安全性。 #include { cout< 运行结果为12。 【2.22】 编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci 数 列的前20项,并存储到动态分配的空间中。 答: #include int *p=new int[20]; *p=1; *(p+1)=1; cout<<*p<<\ p=p+2; for(int i=3;i<=20;i++) { *p=*(p-1)+*(p-2); cout<<*p<<\ if(i%5==0)cout< return 0; } 【2.23】 编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参 数的二次方根。重载sroot()3次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt())。 答: #include double sroot(long b) {return sqrt(b); } double sroot(double c) {return sqrt(c); }