引用的实现机制

引用的机制(研究性课题)

研究一:引用到底是什么?

定义形式:

类型名 & 引用名 = 被引用对象;

C++定义:

引用是被引用对象的一个别名,引用形式即传递实参本身, 是通过被引用对象地址的直接传递实现的 ,对引用的更新或赋值将直接操作在被引用对象身上。

代码说明引用是对被引用对象地址的传递
#include <iostream>
using namespace std;
int main()
{  
   int a=1;
   int & b= a;
    cout << "a:address->" << &a << endl;
    cout << "b:address->" << &b << endl;
    return 0;
}

运行结果表示,引用是对被引用对象地址的传递,那么引用是和被引用对象共用一个地址吗?继续进行研究。

引用的实质性探索

#include <stdio.h>
#include<iostream>
using namespace std;
int main()
{
    int  a = 3; 
    //int&  b = a;
    int * const c= &a;
    printf("a=%d,c=%p\n",a,c);
    printf( "a:address->%p\n",&a); 
    printf( "b:address->%p",&c);
    return 0;
}

在这里插入图片描述
通过将两次运行发现用和定义一个指向被引用对象的‘指针’是一样的,那是不是引用就是指针呢?请注意此处在指针c前加的const!我们继续探究,const是否多余。

const不多余

#include <iostream>
using namespace std;
int main()
{
 int a=1,d=2;
 int & b= a;  //引用变量名b
 int *p=&b;
 int *c=&d;   
  p=c;      //通过指针c试图更改引用的地址
 cout<<b<<endl;
 return 0;
 } 

在这里插入图片描述
我们想通过对指针,对引用的地址进行修改,结果发现虽然编译通过了,但运行发现,引用不不能通过被修改地址的方法修改引用的值,因此上述所说的引用的实质是指针并不准确,我给出如下结论。

引用的机制是计算机帮我们定义了一个指向被引用对象特殊的指针,指针中存放的内容是被引用对象的地址,这个地址被const修饰,不能更改指针中存放的地址,只能更改指针所指向的值也即上述给出定义中传递实参本身!

补充:以上内容均是本人在老师启发下所得,笔者正读大二,本着对编程探索的喜爱进行此研究性课题,若有错误敬请指导改正,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

miss writer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值