重读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