c語言 引用(變數的別名)

2021-10-08 10:04:40 字數 770 閱讀 4143

int a=

10;

int&b=a; 引用:必須在定義的時候初始化,無空引用,且引用不分等級。

指標:指向具體的記憶體空間,是間接訪問變數,指標自身消耗記憶體空間

其指向①可變的(除非用了const)②不一定存在,如空指標null

引用:【不用分配記憶體區域—引用(別名而已)的位址其實就是被引用物件的位址】必須一開始就指向乙個存在的物件(建立時必須初始化,不能為空)

程式在編譯時分別將指標和引用新增到符號表上,符號表上記錄的是變數名及變數所對應位址等【符號表生成後不再改變】

故指標的名字和指標的位址不能改變,但是指標中位址空間內存放的位址能夠改變(指標變數的值可以改) 而引用指向的不能改。

int a;

int*p=

&a;//指標有自己的指標名字和位址,儲存了指向物件的位址(可以更改→指向別的物件的位址)

int(int

&b=a和int

*const pp=

&a;一樣不能改變指向的物件,但能改變指向物件的值)

//不同在於b的位址就是a的位址 即&b == &a

//而pp有自己的位址 pp存放了a的位址 即pp == &a

int a a a的位址

符號表初步了解

傳遞乙個引用→→必然存在且有效【安全但沒有指標快,乙個位址總比複雜資料傳遞快】

傳遞乙個指標→→指標不一定有效【需要判斷所傳遞指標是否非空】

引用 變數的別名

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...

引用 變數的別名,並非指標

引用是乙個已經存在的物件的別名。一旦乙個物件初始化了這個引用,那麼名稱和引用都能夠用來引用該物件。int a 12 int ra a ra 是物件a 的乙個別名 ra 此時物件 a 11 a 10 ra 10 int pa ra pa 指標指向物件 a引用經常與指標混淆,可能是c 編譯器常常將引用像...

C 特殊的「別名」引用

1 在c 中新增加了引用的概念 2 引用可以看作乙個已定義變數的別名 3 引用的語法 type name var 4 引用做函式引數那?引用作為函式引數宣告時不進行初始化 例項 include include intmain void 屬於c 編譯器對c的擴充套件。例項 問題 c中可以編譯通過嗎?i...