常量,引用,指针

1 引用
int &a = 10;             //错误:引用类型的初始值必须是一个对象  
  
double a = 3.14;  
int &b = a;              //错误:此处引用类型的初始值必须是int型对象
  • 引用并非对象
  • 引用必须初始化
  • 引用只能和对象绑定在一起,而不能和字面值或计算表达式的结果绑定
  • 引用类型严格匹配
2 指针
double dval;  
double * pd = &dval;      //正确  
double * pd2 = pd;        //正确  
  
int * pi = pd;            //错误:指针pi的类型和pd的类型不匹配  
pi = &dval;              //错误:试图把double型对象的地址赋给int型指针 
  • 指针本身就是对象
  • 指针的类型要和它指向的对象严格匹配
3 常量引用
int i = 42;  
const int &r1 = i;       //正确:允许将const int & 绑定到一个普通int对象上  
const int &r2 = 42;      //正确  
const int &r3 = r1 * 2;  //正确  
int &r4 = r1 * 2;        //错误  
  
double dval = 3.14;  
const int &ri = dval;    //正确  
//等价于  
const int temp = dval;  
const int &ri = temp;  
  
int i = 42;  
int &r1 = i;  
const int &r2 = i;  
r1 = 0;                  //正确  
r2 = 0;                  //错误 
  • 初始化常量引用时允许用任意表达式作为初始值
4常量指针

定义:又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量 (这个常量是指针的值(地址),而不是地址指向的值) 。

int const* p;  const int* p;
  • 常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;
  • 常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;
  • 指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址;
5 指针常量

定义:本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。

int* const p;
  • 它是个常量!
  • 指针所保存的地址可以改变,然而指针所指向的值却不可以改变;
  • 指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;

已经晕了。。
更多参考 菜鸟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值