變數名實質上是一段連續儲存空間的別名,程式通過變數來申請並命名記憶體空間,通過變數的名字可以使用儲存空間
c++中新增加的概念,引用可以看作乙個已定義變數的別名
定義引用的方式:
type& name = var;
引用作為其它變數的別,在一些場合可以代替指標,引用相對於指標來說具有更好的可讀性和實用性
引用在c++中的內部實現是乙個常指標
//下面兩個定義實質上是相同的
type& name
type* const name
c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大小與指標相同。
c/c++中的間接賦值:
//乙個簡單的間接賦值的例子
int i = 10; //定義乙個int型變數i
int * name = &i; //定義乙個int型別的指標,指向i
name = 11; //間接賦值:通過指標修改i的值
引用的底層實現:
引用在實現上,只不過是把間接賦值的三個要素的後兩步和而為一,當實參傳給形參引用的時候,c++編譯器幫我們取了乙個實參位址,傳給了形參即乙個引用型別的變數(常量指標)
下面是定義乙個普通引用的方式:
int a = 10;
int &b = a;
使用const關鍵字定義引用,則這個引用為常量引用
常量引用的本質:
//以下兩式等價
const & int e
const
int * const e
常量引用的定義:
//c為乙個常引用
const
int &c = a;
不能使用常量引用修改該引用對應的資料,例如:不能給上例定義的常量引用賦值,c = 12是錯誤的。但是常量引用對應的資料是可以變化的,如:a=11,給a賦值是可以的
1)用變數初始化常量引用
int x = 20;
const
int& y = x;
不能使用y修改變數x的值,但x的值是可以更改的
2)用常量初始化常量引用
普通引用是不能用常量初始化的
引用是記憶體空間的別名,字面量10沒有記憶體空間,沒有方法做引用
int &m = 10; //不正確的初始化方法
常量引用是可以用常量初始化
當使用常量(字面量)對const引用進行初始化時,c++編譯器會為常量值分配空間,並將引用名作為這段空間的別名
const
int &m = 10;
C 基礎(05) 引用
1 引用就是給變數起乙個別名。其本質就是乙個指標常量 指標指向的位址不可以修改 int a 10 b 是a的別名。b和a所訪問的記憶體是相同的 int b a 2 注意事項 3 引用作為函式的引數 1 函式的引數傳遞可以為 值傳遞 位址傳遞 引用傳遞。其中值傳遞不會改變原來的變數內容,其相當於將原來...
C 基礎05 引用的基礎
變數名實質上是一段連續儲存空間的別名,是乙個標號 門牌號 程式中通過變數來申請並命名記憶體空間 通過變數的名字可以使用儲存空間 屬於c 編譯器對c的擴充套件 不能用c編譯器的角度思考引用 void main 普通引用必須初始化 void swap int a,int b 改變指標所指位址上的值 vo...
C 語言基礎 8 引用
1.引用不能繫結臨時資料,也不能繫結任何無法獲取記憶體位址的常量,表示式,或值,常引用除外。第一種寫法 錯誤 int func int intmain 第二種寫法 bool isodd int n else int main 第三種寫法 正確 int func int intmain 第四種寫法 正...