C++学习day4之引用

#include<iostream>
using namespace std;

/*
 变量名,本身是一段内存的引用,即别名。此处引入的引用,是为已有变量起一个别名
 */

int main()
{
    /*
     * int a=100;
     *这是a是个变量名,实质是一段内存空间的别名,
     *这个就是出生的时候给它的。日后我们还可以给它取个别名,如下
     *int& b=a;这就建立了一种引用关系。这个时候,我们就叫b是a的别名。
     *b是a的引用。那引用和a之间有什么关系
     *1.引用是一种声明关系,声明的时候必须初始化。你 int& b;是不可以的。
     *引用不开辟空间。这个b是不占空间的。仅仅是一段声明的。
     *此种声明关系,一经声明,不可变更。
     *注意 这里说的是不能声明,而不是不能赋值
     *如下:int a=100; int& b=a; int c=200; b=c;是可以的,因为b=c这里指
     *的是赋值,不是声明。如果你在int &b=c;这才是声明。
     *可以对引用再次引用,多次引用的结果就是多个引用指向同一个地址
     *但是&这个也是个取地址符,你怎么区分什么时候是引用,什么时候是
     *引用呢???。这里其实就是运算符重载。&符号前面有数据类型的时候
     *是引用,其余的都是取地址。比如 int& 就是引用。int *p=&a就是取地址。
     *但是你不能对引用进行取地址。
     */
    int a=100;
    int& b=a;
    /*可以定义指针的引用,但是不能定义引用的引用。
     * 如下:
     * int a=100;int *b=&a;int *&c=b;是可以的,这里C就是对b的引用
     * 这里b是一个指针,所以这是定义指针的引用。
     * 这里需要 int* &d=c;
     */
    /*
     * 可以定义指针的数组,但是不能定义引用数组,可以定义数组引用
     * 定义一个数组 int a[]={1,2,3,4,5};
     * 怎么引用数组,数组名本身是个地址,但是我们不能int * &p=a;
     * 因为你a现在只是一个指针,是不能完全表达一个数组的。
     * 这个a的类型实际上是int[5]这个类型,所以我们引用应该是这样的
     * int(&p)[5]=a;
     */

    return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章