C++中的引用类型
int ival = 1.01是合法的,1.01赋给整型会变窄,丢失精度,输出ival值为1
int &rval1 = 1.01是不合法的,引用必须指向一个实际存在的对象;引用必须赋初始对象;引用是对象的别名。
引用可以多次赋值,但是会跟绑定的对象一起被赋予新值。
C++指针
指针和引用可以对比着学,指针也是对对象的间接访问,不同点在于:
- 指针本身就是一个对象,允许对指针进行赋值和拷贝,可以先后指向不同的对象。
- 指针无须再定义时赋初值,若未被初始化,将拥有一个不确定的值。
int *ip1, *ip2每个指针变量前都要有 * 号
获取对象的地址
指针存放某个对象的地址,用取地址符&取出地址。
int ival = 42; int *p = &ival; 类型严格匹配。
指针值
1.指向一个对象
2.指向紧邻对象所占空间的下一个位置
3.空指针
4.无效指针
练习
分别输出:
i的地址 5
j的地址 10
j的地址 20
j的地址 30
自从p = &j 这行代码之后,指针p一直就是指向的&j,*p = 20改变了j的值,j = 30不用多说;始终没有改变p指针本身的值。
总结
p是指针的值,一般为地址;*p是指针指向对象的值,一般为字面值。