每天看几页C++书,并总结知识点。
目录
1. 读取数量不定的输入while(cin>>n)
比如预先不知道要给多少个数求和时,使用while(cin>>n)进行判断。比如输入的是整数,那么直至遇到不是整数的才跳出循环。其他的无法跳出循环。
#include <iostream>
using namespace std;
int main()
{
int sum=0;
int n,m;
while(cin>>n)
sum+=n;
cout<<sum<<endl;
return 0;
}
2. 输入输出流
>>表示输入运算符,即cin>>n,将输入流cin中的数据赋给n;
<<表示输出运算符,即cout<<n,将右侧给定的对象n的值赋给输出流cout。
endl是一个操纵符,用处是结束当前行,并将缓冲区的内容刷新到设备中。如cout<<n<<endl,首先将缓冲区输出流cout的数据刷新到屏幕上,然后结束当前行。
3. C++取整
round:四舍五入
ceil:向上取整
floor和int:向下取整
4. 引用
引用即别名,它不是一个对象,只是一个已知的对象起的另一个名字。
int sum=3;
int &n=sum;
比如n就是sum的引用,其中一个值改变,另一个值也会改变,被绑定在一起。
(1)引用不是对象,所以引用不能绑在引用上;
(2)引用只能绑在对象上,不能绑在字面值(常量)或者表达式的计算结果;
5. 指针
指针跟引用有所不同:
(1)指针本身是一个对象,允许赋值和拷贝(但是也必须指向对象,不能指向常量);
(2)无需在定义时赋初值(野指针,随便指向谁);
需要注意,指针指向一个元素,赋值用取地址符&。
int a=1;
int *n=&a;
*n=*n+2;
需要注意:
(1)定义时赋值用int *n=&a,后面赋值时去掉*:n=&a;
(2)利用指针访问对象:如果指针指向了一个对象,则允许通过解引用符(*)来访问对象。此时*p跟对象是等价的,改变*p就是改变对象的值;
后面时用*是解引用符:*p表示变量,即p指向的变量。此时*p跟变量是等价的,改变*p就是改变变量的值;
(3)定义空指针:即什么也不指向
int *a=0;
int *b=NULL;
int *c=nullptr;
注意:是指针p为0,不是指针值*p为0。
(4)指针可以多次赋值,即改变其指向的对象;
引用不能改变:改变引用就是改变对象的值。
(5)void *a:void类型的指针。指向一个不知道什么类型的对象,只能用来输出地址,不能用来操作。
总结:
今天看了以下内容:
(1)读取不定量输入:使用while(cin>>n),直到输入不匹配时停止;
(2)输入输出流:没啥重点;
(3)C++取整:四种;
最后两个重点:
(4)引用:等价于另一个对象的别名,本身不是一个对象,不能改变引用;
(5)指针:本身是一个对象,指向另一个对象,可以通过自己改变指向对象的值,也可以指向别的对象,可以为空;