zoukankan      html  css  js  c++  java
  • 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
    ",a);
        {
            //②间接赋值
            int *p = &a;
            *p = 12;
            printf("a=%d
    ", a);
        }
        //③引用赋值
        b = 13;
        printf("a=%d
    ", a);
    
        //结构体引用
        Student s1;
        s1.age = 12;
        //定义s1的引用
        Student &s2 = s1;
        s2.age = 17;
        //直接引用
        printf("直接引用--学生的年龄是%d
    ", s1.age);
        //间接引用
        printf("间接引用--学生的年龄是%d
    ", GetNum(s1));
    
        //引用的本质
        printf("结构体Teacher的大小是%d
    ", sizeof(Teacher));//打印8
        //说明 int &bt2;  占据4个字节大小的内存空间
    
        //引用的本质
        //1)引用在C++中的内部实现是一个常指针
        //Type& name <-->  Type* const name
        //2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
        //3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
        system("pause");
    }
  • 相关阅读:
    jq常用操作
    Vue过滤器
    NodeJS跨域问题
    js获取url参数(通用方法)
    jq动画实现左右滑动
    vue-cli3.0 gui(一)
    微信小程序无法定位
    java连接数据库报了ssl连接的警告
    node——module.exports
    node——Commonjs
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5582431.html
Copyright © 2011-2022 走看看