1. 程式人生 > >常量引用

常量引用

eache 空間 分配內存 cos name 內存空間 struct spa 編譯

思考cost int &a = b PK const int &a = 10;

C++中可以聲明const引用

const Type& name = var

const引用讓變量擁有只讀屬性

//常引用的知識架構
int main(void)
{
    //普通引用
    int a=10;    
    int &b=a;    
    printf("b:%d\n",b);
    
    //常引用
    int x =20;
    const int &y = x; //常引用 是 讓變量 引用只讀屬性 不能通過y去修改x了
    //y = 21; 
//報錯 error: assignment of read-only reference ‘y‘ //常引用 初始化 分為2種情況 //1> 用變量 初始化 常引用 { int x1 = 30; const int &y1 = x1; //用X1變量去初始化 常引用 } //2> 用字面量 初始化 常量引用 { const int a = 10; //C++編譯器把a放在符號表中 //int &m = 41; //普通引用 引用一個字面量 字面量有無內存地址 //引用 就是給內存取多個門牌號(多個別名)
//printf("&41:%d\n",&41); const int &m = 43; //C++編譯器 會 分配內存空間 //43無內存空間,若放在代碼區 則放在代碼區 } return 0; }

struct Teacher1
{
    char name[64];
    int age;
};

//const引用讓變量(所指內存空間)擁有只讀屬性
//void printTeacher(const Teacher1 *const pt)
void printTeacher(const
Teacher1 &pt) { //pt.age = 33; //const引用讓變量(所指內存空間)擁有只讀屬性 printf("pt.age:%d\n",pt.age); }

const引用結論

1Const & int e 相當於 const int * const e

2)普通引用 相當於 int *const e1

3)當使用常量(字面量)對const引用進行初始化時,C++編譯器會為常量值分配空間,並將引用名作為這段空間的別名

4)使用字面量對const引用初始化後,將生成一個只讀變量

常量引用