函数(C++ Primer读书笔记)

C++ Primer 第五版课后题

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
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;
    return 0;
}

  

合法。给ia数组中的每个元素赋值。返回的是引用类型,得到的是左值,所以可以被赋值。

 

练习6.33 :编写一个递归函数,输出vector对象的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
using namespace std;
 
typedef vector<int>::iterator vec_ip;
 
void re_print_vector(vector<int> &vec, vec_ip id)
{
    if (id != vec.end()) {
        cout << *id << endl;
        re_print_vector(vec, ++id);
    }
}
 
int main()
{
    vector<int> vec;
    for (int i = 1; i <= 10; ++i)
        vec.push_back(i);
    re_print_vector(vec, vec.begin());
    return 0;
}

  

//命名真是太困难了。

开始我的re_print_vector声明的是(vector<int> vec, vec_ip id),并没有引用,于是死循环= =,后来发现传递的是形参,那么形参的存储位置和实参一定不相同啊= =,id用永远不可能等于形参vec.end()。

我为什么想到的是用迭代器呢?直接用数字下标岂不是简单的多[汗]。

posted @   我不吃饼干呀  阅读(293)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示