C++Primer第五版 6.3.2节练习

练习6.30:编译第200页的str_subrange函数,看看你的编译器是如何处理函数中的错误的。
答: E:\C++ Primer 第五版 练习和解答\第六章 函数\习题程序\练习6.30.cpp [Error] return-statement with no value, in function returning ‘bool’ [-fpermissive]

练习6.31:什么情况下返回的引用无效?什么情况下返回常量的引用无效?
答:函数终止意味着局部变量的引用将指向不再有效的内存区域。
返回常量的引用无效:在函数内部对常量引用做类似赋值拷贝等动作

练习6.32:下面的函数合法吗?如果合法,说明其功能;如果不合法,修改其中的错误并解释原因。

int &get(int *arry, int index){return arry[index];}
int main()
{
int ia[10];
for (int i = 0; i != 10; ++i)
    get(ia, i) = i;
}

答:错误 int *arry 在函数内部定义,返回局部对象的指针也是错误的。一旦函数完成,局部对象被释放,指针将指向一个不存在的对象。

练习6.33:编写一个递归函数,输出vector对象的内容。
答:见云盘程序

练习6.34:如果factorial函数的停止条件如下所示,将发生什么情况?
if(val != 0)
答:最后运算的结果为0,因为val == 0,函数停止

练习6.35:在调用factorial函数时,为什么我们传入的值是val – 1而非 val–?
答:假设 val = 3;
Int j = val -1 ; //此时j = 3-1 =2
Int j= val–;//则 j等于3,即j等于val的当前值,val再进行减1操作,结果不对。

练习6.33

/*
*练习6.33
*2015/6/17
*问题描述:练习6.33:编写一个递归函数,输出vector对象的内容。
*功能:递归打印  
*作者:Nick Feng 
*邮箱:nickgreen23@163.com 
* 
*/

#include <iostream>
#include <vector>

using namespace std;

void print(vector<int> ivec, vector<int>::size_type j)
{
     if (j != ivec.size()-1 )
        print(ivec , j+1);

    cout << ivec[j] << endl; 
}



int main()
{
    int val;
    vector<int> ivec;
    while (cin >> val)
        ivec.push_back(val);

    print(ivec,0);

    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值