天天看点

第六章习题- C++ primer 笔记第六章习题

第六章习题

size_t q6_7count_calls()
{
	static size_t ctr = 0;
	if (ctr < 1)
	{
		++ctr;
		return 0;
	}
	else
	{
		++ctr;
		return 1;
	}
}

int q6_21(int x1, int *x2)
{
	if (x2 == nullptr)
	{
		cerr << "传入空指针!" << endl;
		return -1;
	}
	if (x1 > *x2)
	{
		return x1;
	}
	else
	{
		return *x2;
	}
}

void q6_22(int *&ip1, int *&ip2)
{
	int *temp = nullptr;
	temp = ip1;
	ip1 = ip2;
	ip2 = temp;
}
void q6_22_test()
{
	int i = 1;
	int j = 2;
	int *p1 = &i;
	int *p2 = &j;
	cout << "p1:" << p1 << endl;
	cout << "p2:" << p2 << endl;
	cout << "*p1:" << *p1 << endl;
	cout << "*p2:" << *p2 << endl;
	q6_22(p1, p2);
	cout << "p1:" << p1 << endl;
	cout << "p2:" << p2 << endl;
	cout << "*p1:" << *p1 << endl;
	cout << "*p2:" << *p2 << endl;
}

int q6_27(initializer_list<int> lis)
{
	int sum = 0;
	if (lis.size()==0)
	{
		return 0;
	}
	for (const auto &i :lis)
	{
		sum += i;
	}
	return sum;
}
void q6_27_test()
{
	cout << q6_27({ 1,2,3 }) << endl;
	cout << q6_27({}) << endl;

}
int & get1(int *arry, int index) { return arry[index]; }
void q_32()
{
	int ia[10];
	for (size_t i = 0; i !=10; i++)
	{ 
		get1(ia, i) = i;//等价下面两句,给数组赋值
		//int &get2 = ia[i];
		//get2 = i;
	}
}

void q6_33(vector<int>::iterator beg, vector<int>::iterator end)
{
	if (beg != end)
	{
		cout << *beg << endl;
		q6_33(std::next(beg), end);

	}
}
void q6_33_test()
{
	vector<int> vi(10, 1);
	q6_33(vi.begin(), vi.end());
}

//6.34
//if(val > 1) 执行到2停止
//if(val != 1) 执行到1停止
           

6.35

int factorial(int val)
{
	if (val > 1)
		return factorial(val--)*val;
	return 1;
}
void q6_35_test()
{
	cout << factorial(5);
}

int main()
{
	q6_35_test();

	getchar();
	return 0;
}
           

val -1 ,可以看到val的值在递减。

第六章习题- C++ primer 笔记第六章习题

val --,可以看到val的值一直是5,val先传值,再减一

第六章习题- C++ primer 笔记第六章习题

–val,可以看到val的值在递减,val先减一,再传值。

第六章习题- C++ primer 笔记第六章习题

6.36

string (*q6_36())[10]{}
string(&q6_36_())[10]{}
           

6.37

//易于理解
using arrt = string[10];
arrt* q6_37_1();			
//写一起 方便阅读
auto q6_37_2()->string(*)[10];
//易于理解 *号容易忘记
string odd[] = { "a","v","d" };
decltype(odd) *q6_37_3();
           

继续阅读