天天看點

C++複合類型-引用變量

變量定義

這裡的 a 就是一個變量,在記憶體裡,開辟了四個位元組的記憶體空間,a 指向的首個位元組的位址。 而 “0” 是放在這四個位元組空間裡的資料。

我們把 a的位址列印出來

std::cout << &a << std::endl;
           

結果是

0x7ffeead54828
           

此時,我們在定義一個 b 變量,并吧 a 指派給 b 變量。

我們再把b的位址列印出來

std::cout << &b << std::endl;
           

結果是

0x7ffeead5481c
           

會發現,定義變量 b 的時候,又開辟了四個位元組的記憶體空間,并把 a 變量指向的記憶體空間裡的資料拷貝到了 b 變量開辟的記憶體空間裡。

那麼,有沒有一個辦法,定義另外一個變量,指向 a 變量所指向的記憶體空間呢,答案是肯定的,那就是 “引用” 變量。

引用變量的定義

int $c = a;
           

int代表的是“引用”指向的變量的資料類型。 使用&c來定義一個引用類型。而 c 則是該應用類型的名稱。

此時,你會發現 c 變量所指向的記憶體空間和 a 變量所指向的記憶體空間是同一個。

我們把變量 c 的記憶體位址列印出來

我們把 a的位址列印出來

std::cout << &c << std::endl;
           

結果是

0x7ffeead54828
           

和 a 變量指向的是同一個記憶體位址。

引用變量總結:

1. 引用變量也是一種變量,隻不過他的定義和普通變量稍有不同,在變量名前面加了個“&”符号。

2. 引用變量其實是為已經存在的變量取了一個新的名詞。引用變量所指向的記憶體位址和舊變量所指向的記憶體位址一緻。

2. 對引用變量的指派,其實就是對引用變量代表的變量指派(因為指向的是同一塊記憶體位址)。

需要注意:引用類型在定義的時候必須初始化