明确一个概念
指针是一个整数变量,存储变量的地址
pointer指针指向data变量
可以看到,pointer的值就是data变量在内存中的地址
指针类型
指针的数据类型表明他指向的内存存放的值的数据类型,这对取出指针指向的内存的值至关重要
星号*放在数据类型后面,表示后面修饰的变量是指针;
星号*放在指针的前面,表示取出指针指向的内存的值
可以看到,通过*pointer修改了data的值
指针的指针
不同的地方就在于,指针指向的内存的值是另一个指针的地址
引用
引用只存在于编码中,实质是给变量起的别名,都是同一存储位置,编译后所有的引用会变为变量本身。
由引用的本质,引出以下结论:
- 引用不能为空
- 引用的对象不会改变,第二次用变量给它赋值时,引用的对象不会改变,只改变引用对象的值,相当于key不变,只变了value
- 使用const修饰引用时,引用无法修改,但原变量自身可以修改
- 使用const修饰引用时,可以用表达式赋值引用,也可用不同数据类型的变量赋值引用
引用与取地址的区别:
&放在变量前,表示为取变量的地址;
&放在数据类型后,表示这是引用
可以看出,引用改变后,变量值也改变
因此,引用常用于函数的参数列表,代替指针的作用,更为简洁