C++ Primer 第五版 第6章 6.3——函数返回类型和return语句习题答案

版权声明:本文为博主原创文章,未经允许,不得转载!欢迎留言,允许附带链接转载! https://blog.csdn.net/Sophia_11/article/details/88342216

理论讲解请参考:C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记 


目录

6.31

6.32

6.33

6.34 

6.35

6.36

6.38


6.31

返回引用无效:返回局部对象的引用无效,这也是在实际编程中需要注意的细节

返回常量的引用:如果需要对返回的引用进行赋值,返回常量就无法赋值


6.32

函数合法,返回第1~10个元素的值,此题中返回的是0~9的数值

#include <iostream>
#include <string>
#include <vector>
using namespace std;


int &get_val( int *arry, int index)
{
    return arry[index];  //返回str[ix]的引用
}
int main()
{
    int ia[10];
    for (int i = 0; i != 10; ++i)
    {
        get_val(ia, i) = i;
        cout << ia[i] << ' ';
    }
    /*return 0;*/
}


6.33

这里我暂时只想到了倒序输出vector对象

#include <iostream>
#include<string>
#include<vector>
using namespace std;

//函数的声明及定义,接受两个参数,vector对象和vector的大小
void get_val(vector<int> a, int ix)
{
    if (ix != -1)
    {
        cout << a[ix] << endl;
        --ix;
        get_val(a, ix);//递归
    }
}
int main(int argc, char *argv[])
{
    int a[5];
    for (int i = 0; i != 5; ++i)
        a[i] = i;
    vector<int> vec(a, a + 5);
    get_val(vec, vec.size() - 1);//注意下标从0开始
    return 0;//代表执行成功
}


6.34 

 如果val不出现为0的情况,将无限制的循环下去,所以在递归函数中,尽量不要用这种方式作为终止条件


6.35

要弄清楚这个目的,val-1是为了减1的目的,但是val--是先用val的原始值再减1达不到val-1的目的,如果想用这种方式,则应该是--val


6.36

返回数组的引用,包含10个string对象:

string (&func(char c))[10]

6.38

decltype(odd) &arrPtr(int i)

{

    return (i % 2) ? odd : even;

}

猜你喜欢

转载自blog.csdn.net/Sophia_11/article/details/88342216