012_常引用,引用就是一个常指针

//常量引用
#if 1
void test()
{
    //普通引用
    int a = 10;
    int &b = a;
    printf("b:%d\n", b);

    /*
        引用就是一个常量指针
        Type &p  ==>  Type * const p
        常引用
        常引用让变量(引用) 拥有只读属性
    */
    int x = 20;
    const int &y = x;// ==> const int * const y 不能通过y去修改x了
    //y = 21;

    //常引用的初始化
    {
        //1 用变量 初始化常引用
        int x1 = 10;
        const int &y1 = x1;//用x1变量去初始化 常引用
    }

    {
        //2 用字面量 初始化 常引用,会单独的分配内存空间
        const int a = 40;//在c++中是真正的常量, c++编译器把a放在符号表中存在符号表中
        //int &m = 41;//编译不过 普通引用 引用一个字面量 请问字面量有没有内存地址? 没有
        //引用 就是给内存取多个门牌号 (多个别名) 
        const int &m = 41; //c++编译器会为m 分配内存空间, 并将引用名m作为这段空间的别名
        printf("m = %d\n", m);//使用字面量对const引用初始化后,将生成一个只读变量
    }
}
#endif
//常引用的函数调用
#if 0
struct Teacher
{
    char name[64];
    int age;
};

//void printTeacher(const Teacher  * const myt)
void printTeacher(const Teacher &myt)//引用是一个常指针
{
    //常引用 让 实参变量 拥有只读属性 
    //myt.age = 33;
    printf("myt.age:%d \n", myt.age);
}
void test()
{
    Teacher  t1;
    t1.age = 36;
    printTeacher(t1);
    cout << "hello..." << endl;
}
#endif

猜你喜欢

转载自blog.csdn.net/WUZHU2017/article/details/81291865