引用的本质

1)c++编译器中,使用常指针作为引用的内部实现,因此引用所占用的内存空间大小与指针相同;
2)从使用的角度,引用会让人误认为只是一个别名,没有自己的存储空间,这是c++为了实用性而做出的细节隐藏。
代码案例:

#include <iostream>
using namespace std;

//1.单独定义的引用时,必须初始化,说明很像一个常量
void main01()
{

    const int c1 = 10;

    int a = 10;
    int &b = a;

    printf ("&a =%d \n",&a);
    printf ("&b =%d \n",&b);//上述两个打印值相同,说明a和b在同一内存空间取别名

    cout <<"hello..."<<endl;
    system("pause");
    return ;
}

//2.普通引用有自己的内存空间
struct Teacher
{
    char name[64];//64
    int age;//4

    int &a;//4
    int &b;//4
};


//3.引用的本质 char *const p 

void  modifyA(int &a1)
{

    a1 = 100;
}

void  modifyA2(int * const a1)
{

    *a1 = 10;//*实参的地址,去间接修改实参的值
}


void main()
{

    //char *const p;//引用在c++中实现是一个常量指针
    int a =0;

    //1.
    modifyA(a);//执行这个函数调用时,我们程序员不需要取a的地址
    printf ("a=%d\n",a);

    //2.
    modifyA2(&a);//如果是指针,则需要程序员手工取实参的地址
    printf ("a=%d\n",a);

    printf ("sizeof(Teacher)=%d\n",sizeof(Teacher));//sizeof(Teacher)=76,a和b很像指针占的内存大小
    system("pause");
}

运行结果:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值