C++ primer(5th)一~三章

本文概述了C++ Primer第五版前三章的主要内容,包括for和while循环的对比,基本内置类型,变量的声明与定义,复合类型如引用和指针的特性,const的使用规则,以及自定义数据结构的基础知识。详细讨论了引用、指针、const对象的不同用法,并介绍了类型别名、auto和decltype的用途。此外,还涉及了标准库类型如string和vector,以及迭代器和数组的使用。
摘要由CSDN通过智能技术生成

第一章

  1. for循环和while循环的区别

在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。两种形式各有优点,但它们在功能上是等价的,可以相互转换。

第二章

2.1基本内置类型

  1. 一个字(word)由4或8字节(byte)构成,一个字节由8比特(bit)构成;

  2. 字符串实际是由常量字符构成的数组,编译器在字符串结尾加“\0”,所以实际长度比本身内容多1,例字符串“A”包含两个字符
    2.2变量

  3. 对象(object)是一块能存储数据并具有某种数据类型的内存空间;

  4. 默认初始化:如果定义变量时未指定初值,则变量会被默认初始化
    默认初始化的三条性质:
    (1)定义在任何函数体外的变量会被初始化为0;
    (2)定义在函数体内部的变量不会被初始化;
    (3)类的对象未被初始化,则初值由类决定

  5. 声明与定义
    声明:声明确定变量名字和类型,使用变量前必须先声明
    定义:申请存储空间,可能会赋予初始值
    extern int i; //声明不定义extern int pi=3; //定义int j; //声明且定义
    变量可多次声明,但只能一次定义;

  6. 新建的局部变量可以覆盖同名的全局变量,::reused可以显式的访问全局变量
    2.3复合类型:引用和指针
    引用(reference):定义引用时,程序会把引用及其初始值绑定在一起,而不是将初始值拷贝给引用(引用即别名)
    例:

                                            int &refval = ival;   //refval指向ival(refval是ival的另一个名字)
                                            refval = 2//把2赋给refval指向的对象,即赋给ival
                                            int ii = refval   //与ii = ival一样
                                            int &ref3 = refval;   //ref3与refval绑定,ref3与ival绑定
     *注意:*引用的类型与绑定对象一致,引用所绑定的初始值必须是对象,不能是值;

指针(pointer):指向另外一种类型的复合类型,指针存放某个对象的地址
指针的类型必须与其所指对象的类型一致
例:

                                          int*ip1,*ip2,ip5;    // ip1和ip2都是指向int 型对象的指针,ip5是int;
                                          int ival=42;
                                          int *p=&ival;  //p存放ival的地址,或说p是指向变量ival的指针,或说初始值是int 型对象的地址;
                                          cout<<*p;   //由解引用符“*”得到指针p所指的对象,输出42;
                                          int *p3=p;    //初始值为int类型对象的指针,也就是指针的指针
                                          *p=0;  //为p所值的对象赋值
                                          cout<<*p;//输出0;
                                          int *p2=p;     //初始值是指向int型对象的指针;
                                          p2=&ival; //p2指向ival;
                                          *p2=0;    //ival的值被改变为0,指针p2没有改变,

指针和引用的区别::(1)指针本身是一个对象,允许对指针赋值和拷贝,可先后指向不同的对象;
(2) 引用本身并非一个对象,引用只能绑定一次对象;
(3)指针无需在定义时赋初值;
空指针:不指向任何对象
例:

                    int *p1=nullptr;
                    int *p2=0;
                    int *p3=NULL;

void*指针:可存放任意类型对象的地址
指向指针的指针

                                  int ival =1024int *pi=&ival;  //pi指向一个int型的数,pi是指向int型数的指针
                                  int **ppi=&pi;  //ppi指向一个int型的指针,ppi是指向int型指针的指针
                                  cout<<ival;//输出1024;
                                  cout<<*pi;    //输出1024;
                                  cout<<**ppi; //输出1024;//**

指向指针的引用

                                  int i=42;
                                  int *p;   //p是一个int型指针
                                  int *&r=p;   //r是一个对指针p的引用
                                  r=&i;     //令p指向i;
                                  *r=0;   //将i值改为0;

2.4 const:把变量定义成常量,const对象必须初始化

                         const int i=9;     //  编译时初始化
						 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值