变量提供一个可供程序操作的存储空间。c++中的每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式。
变量定义的基本形式是:类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。
当对象在创建时获得一个特定的值,我们说对象被初始化了。
这4中方式都可以初始化。
声明变量和定义变量的区别
声明变量使用
如果对声明变量进行赋值,那就不是声明变量,而是定义变量
所以如果想使用另一个文件中的变量,需要在文件中使用extern定义变量
在函数内部,试图初始化一个extern关键字标记的变量将引发错误。
变量名由字母、数字和下划线组成。其中必须以字母或下划线开头。
变量作用域主要是以花括号为分界线,名字main定义与所有花括号之外,它和其他大多数定义在函数体之外的名字一样拥有全局作用域。一旦声明之后,全局作用域内的名字在整个程序范围内都可使用。
引用为对象起另外一个名字。
refi就是i的另一个名字
int &refi; //错误,引用必须初始化
定义引用时,程序把引用和他的初始值绑定到一起,而不是将初始值拷贝给引用。引用无法重新绑定到另外一个对象。
对指针的引用
指针是指向另外一种类型的复合类型
1、指针本身就是一个对象,允许对指针赋值和拷贝,可以先后指向几个不同的对象
2、指针无需在定义时赋初值。
3、指针不能指向引用。
先定义指针再赋值
定义指针时赋值
p存放的是val的地址。
通过访问指针来访问所指向的对象使用解引用。
给解引用赋值实际上就是给指针所指对象赋值
空指针不指向任何对象,在试图使用一个指针之前代码可以首先检查是否为空。
三种方法生成空指针
在条件表达式中使用指针,如果指针的值是0,条件就是false
两个相同类型的指针进行比较,如果两个指针存放的地址值相同则他们相等,使用==。
void*是一种特殊的指针类型,可用于存放任意对象的地址,但是不知道是什么类型的对象,因此不能直接操作void*指针所指的对象。
**表示指向指针的指针
获取对象的值使用*pi和**ppi。