理论讲解请参考:C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记
目录
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;
}