c++引用

引用 :

  • 引用是变量的别名
  • 引用必须初始化
int a = 10;
int &b = a;
  • b跟a就绑定起来了,改变a就是改变b,同理,改变b就是改变a
  • &符号其实就是取地址符号,含义只有这一个。

*符号就是创建一个指针,或者是做一次地址跳转

int a = 10;   // 给a分配一个内存逻辑地址0x100001, 这个地址存放了值10;
int *p = &a;  //创建变量p, 给p分配地址0x100002, 这个地址存放的值是"0x100001"(a的逻辑地址值);
int *&q = p;  //创建变量q, 给q分配地址也是0x100002, 因此这个地址存放的值还是a的逻辑地址值;  q是p的别名。    
*q = 20;       //访问存放在q变量地址下的值, 获得了a的地址值, 再访问一下a的地址值, 修改上面的内容为20;

我们回顾一下指针作函数参数时:

void fun(int *a, int *b)
{
       int c = 0;
       c = *a;
       *a = *b;
       *b = c;
}
int x = 10, y = 20;

fun(&x, &y)

如果我们将 引用作函数参数

void fun(int &a, int &b)
{
       int c = 0;
       c = a;
       a = b;
       b = c;
}
int x = 10, y = 20;

fun(x,y)

这样输入参数就会特别简洁。其中a是x的别名,b是y的别名。

const 与指针类型

int x = 3;     
const int* p = &x;
p = &x;  //正确
//*p被定义为常量,故*y = 4将会报错
*p = 4;  //错误

const int x = 3; int y = &x; //可变指针指向不可变变量,可以通过修改y的值来改变x,对于计算机来说是有风险的 ,所以错误
int x = 3; const int *y = &x; //不可变指针指向可变变量,权限小的接收一个权限大的,是被编译器允许的;但是不允许权限大的去接收一个权限小的

int const count = 3;

const int * p = &count;   //正确

int* const p = &count;    //错误

const int* const p = &count;  //正确

指针指向const修饰的变量时,应该是const int const *p = &a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值