C++ 引用基础

//引用
#include<iostream>

using namespace std;

struct Student{
    char name[30];
    int age;
};

struct Teacher{
    int &at2;
    int &bt2;
};


int GetNum(Student &s2){
    s2.age = 19;
    return s2.age;
}

void main(){
    int a = 10;//编译器分配4个字节的内存,变量名a就是内存空间的的标识

    //引用概念
    //在C++中新增加了引用的概念,C语言中没有引用的概念
    //引用可以看作一个已定义变量的别名
    //引用的语法:Type& name = var;
    //引用做函数参数那?(引用作为函数参数声明时不进行初始化)

    //int &b1;
    //报错 error C2530: “b1”: 必须初始化引用
    //说明:引用定义的时候必须赋初始值

    int &b = a;//b是a的别名  变量b也是a对应内存空间的标识

    //a的三种赋值方式
    a = 11;//①直接赋值
    printf("a=%d\n",a);
    {
        //②间接赋值
        int *p = &a;
        *p = 12;
        printf("a=%d\n", a);
    }
    //③引用赋值
    b = 13;
    printf("a=%d\n", a);

    //结构体引用
    Student s1;
    s1.age = 12;
    //定义s1的引用
    Student &s2 = s1;
    s2.age = 17;
    //直接引用
    printf("直接引用--学生的年龄是%d\n", s1.age);
    //间接引用
    printf("间接引用--学生的年龄是%d\n", GetNum(s1));

    //引用的本质
    printf("结构体Teacher的大小是%d\n", sizeof(Teacher));//打印8
    //说明 int &bt2;  占据4个字节大小的内存空间

    //引用的本质
    //1)引用在C++中的内部实现是一个常指针
    //Type& name <-->  Type* const name
    //2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
    //3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
    system("pause");
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值