野指针

再探C++Primer (4)指针、引用、对象和内存

北城以北 提交于 2019-12-09 13:22:10
###基本内置类型和复合类型# 基本内置类型就是算数类型和空类型,算数类型包括字符、整数、布尔值、浮点数,空类型是void; 复合类型指基于其他类型定义的类型,例如指针和引用。 ###引用# 引用就是给对象起的别名,通过声明对象时在对象标识符前加‘&’符号来定义引用类型。例如:int a=100;int &b=a;则可以通过对b的操作来操作变量a; 引用本身并不是对象,只是对象的别名,在内存中没有具体的存在; 引用只与其初始化的对象绑定在一起,初始化后不能将引用绑定到其他对象上; 引用只能绑定在对象上而不能绑定在表达式或字面值常量上。 ###指针# 指针同引用近似,提供了对其他对象的间接访问; 指针是一个独立的对象,允许对指针进行赋值和拷贝,定义指针后,根据计算机位数不同在内存中占据不同的大小,例如32位计算机/32位编译器中,指针大小是4字节; 指针存储的是对象在内存中的逻辑地址; 指针可以不被初始化也可以在生命周期内指向多个对象。 ####获取对象地址、利用指针访问对象# 指针一般要求指针类型同其所指对象严格匹配 int a = 10; int *b; b = &a; //通过取地址符获取变量a地址 int c = *b; //通过解引用符获取指针b所指变量 double *d = a; //错误,指针类型同所指对象不匹配 指针可以不被初始化,通过取地址符&可以获取对象地址