C 基礎語法 01 引用

2021-08-10 16:05:27 字數 1452 閱讀 6833

變數名實質上是一段連續儲存空間的別名,程式通過變數來申請並命名記憶體空間,通過變數的名字可以使用儲存空間

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 第四種寫法 正...