指针:
指针就是通过指向的地址获取地址中的值。
定义两个变量 int a = 10,int b = 20;
定义一个指针 int* p = a;(这一步以为已经把a的地址赋值给p: p = &a)
通过 * 把p也就是&a 这个地址的值 进行获取,所以*p等于10。
总结: p 为 a的地址,*p为a的值。
可以通过*p来改变 a的值,如 *p = 30;
此时因为*p是通过 p的地址也就是a的地址进行的赋值,所以a的值现在也为30。
指针的地址是可以改变的,如 p = &b;
此时因为p指向的地址改变指向&b, 所以*p获取的值为b的值20。
const:
const理解为 固定住使不能改变。
如 int* const p = b;
const修饰p后,此时p的地址指向&b,并且p的地址指向不能再改变。
比如此时再给p改变地址指向的操作 p = &a; 是非法的,错误的。
如 const int* p = b;
const 修饰int* 后,此时p指向地址的值不能再改变。
比如此时再进行*p = 40的操作是非法的,错误的。
引用:
引用是直接通过变量的地址进行操作的,相当于给一个变量取了别名。
定义一个变量 int c = 50;
现在定义另外一个变量引用c变量 int &d = c;(引用变量必须赋初值)
此时d 和 c的地址是相同的,自然值也是相同的,也就是说,d和c是共用同一地址。相当于同一个人有两个名字。