C++ primer从头再来(一)

重读c++ primer, 学习细节。

#include <iostream>

using namespace std;

int main()
{
	int sum=0, value;
	while(cin>>value)
		sum+=value;
	cout<<"Sum is:"<<sum<<endl;
	return 0;
}

 第8行,while条件测试输入操作符的返回结果,测试std::cin。遇到文件结束符(end-of-file)或遇到无效输入时,如读取了一个非整数的值,则失败。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> ivec;
	for(vector<int>::size_type ix=0; ix!=10; ++ix)
	{	
		ivec.push_back(ix);
	}
	for(vector<int>::size_type ix=0; ix!=ivec.size(); ++ix)
	{
		cout<<ivec[ix]<<endl;
	}
	return 0;
}

vector的简单用法。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	vector<int> ivec;
	for(vector<int>::size_type ix=0; ix!=10; ++ix)
	{	
		ivec.push_back(ix);
	}
	for(vector<int>::iterator iter=ivec.begin(); iter!=ivec.end(); ++iter)
	{
		cout<<*iter<<endl;
	}
	return 0;
}

迭代器iterator的使用。

#include <iostream>

using namespace std;

int main()
{
	const size_t array_size = 10;
	int ia[array_size];
	
	for(size_t ix=0; ix!=array_size; ++ix)
		ia[ix]=ix;
	for(size_t ix=0; ix!=array_size; ++ix)
		cout<<ia[ix]<<endl;
	return 0;
}

数组下标的正确类型是size_t。

#include <iostream>

using namespace std;

int main()
{
	int ival = 1024;
	int *piv = &ival;
	int **ppiv = ϖ
	cout<<ival<<endl<<*piv<<endl<<**ppiv<<endl;
	return 0;
}

指向指针的指针。

const double a = 3.14;
	double *pa = &a;	//error, pa is a plain pointer
	const double *pb = &a;//ok, a pointer to const
	//指向const对象的指针,不允许用指针来改变其所指的const值。
	//但可以使其指向别的对象。

	int errNumb = 0;
	int *const curErr = &errNumb;
	//const指针,const指针的值不能修改,意味着不能使curErr指向其他对象。

 

//创建动态数组
	int *pia = new int[10];//arrays of 10 uninitialized ints
	int *pia2 = new int[10]();//arrays of 10 initialized ints, all 0

//移位操作符具有中等优先级:
	//其优先级比算术运算符低,但比关系运算符、赋值操作符和条件操作符优先级高。
	cout<<42+10;//ok
	cout<<(10<42);//ok
	cout<<10<42;//error

#include <iostream>
using namespace std;

void reset(int *ip)
{
	*ip = 0;//改变ip所指向的int值
	//ip = 0;//仅仅改变ip的局部变量,对外界无影响
}

int main()
{
	int i = 42;
	int *p = &i;
	cout<<"i:"<<*p<<endl;
	reset(p);
	cout<<"i:"<<*p<<endl;

	return 0;
}


结果:

i:42

i:0

#include <iostream>
using namespace std;

void reset(int *ip)
{
	//*ip = 0;//改变ip所指向的int值
	ip = 0;//仅仅改变ip的局部变量,对外界无影响
}

int main()
{
	int i = 42;
	int *p = &i;
	cout<<"i:"<<*p<<endl;
	reset(p);
	cout<<"i:"<<*p<<endl;

	return 0;
}

结果:

i:42

i:42


你可能感兴趣的:(C++ primer从头再来(一))