第5-6章

练习5.25

#include<iostream>
using std::cin;
using std::cout;
using std::endl;
#include<fstream>
using std::ifstream;

#include<string>
using std::string;

#include<vector>
using std::vector;
//#include<stdexcept>
using std::runtime_error;
int main() {
	int i1, i2;
	while (cin >> i1 >> i2)
	{
		try
		{	
			if (i2 == 0)
				throw runtime_error("division can't be zero!");
			cout << i1 / i2 << endl;
		}
		catch (runtime_error err) {
			cout << err.what()
				<< "\ntry again?y or n" << endl;
			char c;
			cin >> c;
			if (!cin || c == 'n')
				break;
		}

	}

练习6.23

#include<iostream>
using std::cin;
using std::cout;
using std::endl;

#include<string>
using std::string;

#include<vector>
using std::vector;
//#include<stdexcept>
using std::runtime_error;
using std::begin;
using std::end;


void print(int i) {
	cout << i << endl;
}

void print(const int *ia,const int size) {
	for (int i = 0; i != size; ++i)
		cout << ia[i] << endl;
}

void print(const int *beg, const int *end) {
	while (beg != end)
		cout << *beg++ << endl;
}

int main() {
	int i = 0, j[2]{ 1,2 };

	print(i);

	print(j, begin(j)-end(j));

	print(begin(j), end(j));

	system("pause");
}

练习6.32

先明确几个点

参数传递:   每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化.

什么意思呢,比如 形参是 int i   int &i    传入的是j

那就是int i =j ;    int &i = j;

形参不管是引用还好,还是普通的类型 都是这个过程

而返回一个值 (不管是返回一个普通的类型 还是一个引用)  的方式和初始化一个变量或形参的方式完全一样: 返回值用于初始化调用点的一个临时量,该临时量就是函数调用的结果

比如  一个函数

(1)  int f1(int i)

     {return i} 

(2)   int &f2(int i)

       {int &j = i;return j }

我们调用(1):

int  i = 2;

 int j = f1(i);         

这里发生了什么呢?   就是  int tmp = i ;  int j = tmp;

ok   再来看  调用 (2)

int & k = f2(i) ;

理想的情况是  int & tmp = j ;   实际是 int &tmp = i    (a)  

int & k  = tmp;  

 但是  i是局部变量 (跟全局变量i不是一个i   这个i是f2调用时,生成的形参i ) 它在  (a) 步完成之后就被释放掉

所以这个是错的

再来看 练习6.32的题,   它返回的是arry[index]   这个实际是arry指向的数组的第index元素的引用   实际就可以把它看成 *(arry+index)    因为使用引用的类型的对象   就可以把它看成它引用的对象

 arry是一个指针  它跟全局变量 比如 list     指的是同一个内存地址  当然跟list 不是一个对象,arry在函数完成之后被清空了,但arry指向的数组没有被释放掉  因为全局变量 list 也指那个地方    那第index元素自然也没被释放掉

所以是对的

猜你喜欢

转载自blog.csdn.net/speargod/article/details/84325277
5-6