C++基础札记
初始化
一般情况下,初始化可以用花括号,圆括号,等号这三种方式。作为 C++11 新标准的一部分,用花括号来初始化变量得到了全面应用。无论是初始化对象还是某些时候为对象赋新值,都可以使用这样一组由花括号起来的初始值了。
初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前的值擦除,以一个新值来代替。
另外定义变量的时候,如果没有指定初始值,则变量被默认初始化(建议初始化每一个内置类型的变量)。一种例外的情况是定义在函数体内部的内置类型变量将不被初始化。
变量声明与定义
- 声明使得名字为程序所知,而定义负责创建于名字关联的实体。
- 变量声明规定了变量的类型和名字,这一点上定义与之相同,但定义同时还申请了存储空间。
- 变量能且只能被定义一次,但是却可以被多次声明。
引用与指针
声明的两种写法
涉及到指针或引用的声明,一般会有两种写法:
这两种写法并没有孰对孰错之分,关键在于从一而终。
引用
引用并非对象,它只是为一个已经存在的对象去的别名 .
引用与指针的区别,
- 指针是一个实体,而引用仅是个别名;
- 引用在定义时必须初始化(谁的别名),之后不能改变(从一而终);指针可变;
- 引用不能为空,必须与合法的存储单元关联;指针可以为空;
指针赋值
在学指针时,我们常常会犯这样的错误,
因为经常听到的一句话就是,指针就是地址,那么为什么不能用常量或 int 变量给指针赋值?
这样的理解是不准确的,指针是一种变量,存放着某个对象的地址,它有自己的类型,比如上面的 int *。我们要给其赋值,那也得是赋 int * 的,
空指针
空指针,
复合类型类型
- 指向指针的指针
- 指向指针的引用
面对比较复杂的指针或引用的声明语句时,最简单的办法就是从右往左读,离变量名最近的符号对变量名的类型有最直接的影响。
const 限定符
因为 const 对象一旦创建后就不容许改变,所以必须初始化。
指向常量的引用(指针),没有规定其所指向的对象必须是一个常量,所谓指向常量的引用(指针),它们觉得自己指向了常量,所以自觉地不去更改所指对象的值,而并不是说所指对象的值不能通过其它方式改变。