1)在c++中新增加了引用的概念
2)引用可以看作乙個已定義變數的別名
3)引用的語法:type& name = var;
4)引用做函式引數那?(引用作為函式引數宣告時不進行初始化)
例項:
#include
#include
intmain
(void
)
屬於c++編譯器對c的擴充套件。
例項:
//問題:c中可以編譯通過嗎?
intmain()
//結論:請不要用c的語法考慮 b=11
普通引用在宣告時必須用其它的變數進行初始化,引用作為函式引數宣告時不進行初始化。
例項:
#include
#include
void
swap
(int a,
int b)
//方式一,使用指標
void
swaq1
(int
*a,int
*b)//方式二,使用引用
void
swaq2
(int
&a,int
&b)int
main
(void
)
1)引用作為其它變數的別名而存在,因此在一些場合可以代替指標。
2)引用相對於指標來說具有更好的可讀性和實用性。
例項:
#include
#include
intswap
(int
&a,int
&b)int
swap
(int
*a,int
*b)
思考1:c++編譯器背後做了什麼工作?
例項:
#include
#include
/*int swap1(int &a, int &b) */
intswap2
(int
*const _a,
int*
const _b)
intmain
(void
)
1)引用在c++中的內部實現是乙個常指標
type& name <-- -->type* const name
2)c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大小與指標相同。
3)從使用的角度,引用會讓人誤會其只是乙個別名,沒有自己的儲存空間。這是c++為了實用性而做出的細節隱藏。
例項:
#include
#include
void
func
(int
&var)
void
func
(int
*const var)
intmain
(void
)
1)當實參傳給形參引用的時候,只不過是c++編譯器幫我們程式設計師手工取了乙個實參位址,傳給了形參引用(常量指標)。
2)當我們 使用引用語法的時,我們不去關心編譯器引用是怎麼做的當我們 分析奇怪的語法現象的時,我們才去考慮c++編譯器是怎麼做的。
例項:
#include
#include
void
boy_home
(int
**meipo)
void
boy_home1
(int
*&meipo)
intmain
(void
)
在 c++中可以宣告 const 引用
語法: const type& name = var;
const 引用讓變數擁有唯讀屬性
分兩種情況:
用變數初始化常引用
用字面量初始化常量引用
例項:
#include
#include
intmain
(void
)
1)const & int e 相當於 const int * const e
2)普通引用 相當於 int *const e1
3)當使用常量(字面量)對const引用進行初始化時,c++編譯器會為常量值分配空間,並將引用名作為這段空間的別名。
4)使用字面量對const引用初始化後,將生成乙個唯讀變數
這是我第一次寫部落格效果可能不是很好,但是我以後會加油的。
以上是上課時做的筆記,我個人認為寫的還不錯所以才發布的。
特殊的「別名」 引用 詳解
引用專題 變數名回顧 變數名實質上是一段連續儲存空間的別名,是乙個標號 門牌號 程式中通過變數來申請並命名記憶體空間 通過變數的名字可以使用儲存空間 問題 1 對一段連續的記憶體空間只能取乙個別名嗎?a 在c 中新增加了引用的概念 b 引用可以看作乙個 已定義變數 的別名 c 引用的語法 type ...
c語言 引用(變數的別名)
int a 10 int b a 引用 必須在定義的時候初始化,無空引用,且引用不分等級。指標 指向具體的記憶體空間,是間接訪問變數,指標自身消耗記憶體空間 其指向 可變的 除非用了const 不一定存在,如空指標null 引用 不用分配記憶體區域 引用 別名而已 的位址其實就是被引用物件的位址 必...
引用 變數的別名
1.引用只可以乙個變數所賦值,賦值之後不可以再作為另乙個變數的引用。舉例 int a 0 int b 1 int r a r b error 什麼可以被引用 真值,指標變數。for instance 1.int r 1 相當於 double temp double 1 其實應該也可以是int型別 i...