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