码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 引用基础

时间:2016-06-13 23:40:43      阅读:509      评论:0      收藏:0      [点我收藏+]

标签:

//引用
#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");
}

 

C++ 引用基础

标签:

原文地址:http://www.cnblogs.com/zhanggaofeng/p/5582431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!