第一篇 理解“引用初始化以后不能被改变 指针可以改变所指的对象”这句话

基础的东西经常不看,也会忘,在看到“引用初始化以后不能被改变 指针可以改变所指的对象”这句话时就理解错了,写下来巩固下。

 

       此处说的“引用初始化以后不能被改变”不是指变量的值不可变,而是指向的变量地址不可变。这个得再去理解下引用的定义。

 

1.定义回顾

       引用——引用就是某一变量(对象)的一个别名,对引用的操作与对变量直接操作完全一样。

                       作为目标变量的别名,对引用的任何操作都等价于对目标变量的操作,同时,声明一个引用,并不是新定义了一个变量,只表示该引用名是目标变量名的一个别名,   因此引用本身不占存储单元,编译器不会给引用分配存储单元。所以对引用的取地址,返回结果即是目标变量的内存地址。

 

 

2.代码

 

 
  1. int num1 = 10;

  2. int num2 = 100;

  3.  
  4. int &hnum = num1;

  5. int *pnum = &num1;

  6.  
  7. cout<<"num1="<<num1<<",&num1="<<&num1<<endl;

  8. cout<<"hunm="<<hnum<<",&hnum="<<&hnum<<endl;

  9. cout<<"*pnum="<<*pnum<<",pnum="<<pnum<<endl;

  10.  
  11. hnum = num2;

  12. pnum = &num2;

  13.  
  14. cout<<"num1="<<num1<<",&num1="<<&num1<<endl;

  15. cout<<"hunm="<<hnum<<",&hnum="<<&hnum<<endl;

  16. cout<<"*pnum="<<*pnum<<",pnum="<<pnum<<endl;


 

 

 

3.截图结果

 

4.一道面试题

 

一道面试题

 
  1. string s1(\"Nancy\");

  2. string s2(\"Clancy\");

  3.  
  4. string& rs = s1; // rs 引用 s1

  5. string *ps = &s1; // ps 指向 s1

  6. rs = s2; // rs 仍旧引用s1

  7.    // 但是 s1的值现在是\"Clancy\"

  8.  
  9. ps = &s2; // ps 现在指向 s2;// s1 没有改变

 

原文:https://blog.csdn.net/wu_123_456/article/details/39929003

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值