重读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;
- }
#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;
- }
#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;
- }
#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;
- }
#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;
- }
#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指向其他对象。
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
//创建动态数组
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
//移位操作符具有中等优先级:
//其优先级比算术运算符低,但比关系运算符、赋值操作符和条件操作符优先级高。
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;
- }
#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;
- }
#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++编程语言的一些核心概念和技术,包括基本的输入输出操作、使用vector容器、迭代器的运用、数组操作、指针的使用、动态数组的创建、移位操作符的优先级及函数如何改变指针所指向的数据。

被折叠的 条评论
为什么被折叠?



