「&」在c++裡的三種用法:
char a=10;
char b=20;
char c=
0;
1.作為二目運算子,位與符。
c=a&b;
2.單目運算子,取位址符。
char *p=0;
p=&a;
3.型別與識別符號之間就是引用,x是a的別名;
char &x=a;
引用:
void
fun(int &x)
//void fun(int * const x)
int main()
引用的特點:
1.沒有空引用,必須給予初始化,不能 int &c;
2.一旦引用成為變數的別名時,整個生存期內一直為其別名,不能改變。
引用和指標的區別:
在語法層面來看,指標必須存放位址,指標必須通過解引用才能訪問指向的位址,但是引用就是某個變數的別名,通過對引用的改變就可以改變對應的變數,從**的底層來看,引用是乙個自身為常性的指標,它的處理和指標沒有差別,在語法層面來看,引用就是指標的乙個語法糖。
以引用的方式返回乙個物件或者變數:
這個物件或者變數的生存期不受函式的影響,函式結束,物件或者變數仍然存活。例如:1)全域性物件 2)區域性變數加靜態關鍵字 (.data區) 3) 返回值為引用的函式作為左值。引用進,引用出。
普通引用:
int a =10;
int &b=a;
//int *const b =&a;//可以通過b改變a
const int &c = a;
//const int *const c =&a;//不能通過c改變a
常引用:
如果是乙個常變數,不能拿普通引用去引用,必須拿常引用去引用。
const int a=10;
const int &b=a;
//常引用
//一種編譯器: const int * const b =&a;
//另一種編譯器:int tmp =x; const int &b =tmp;
int const
&c=a;
//常引用的另一種形式
常引用去引用字面常量時,底層首先定義了乙個內建型別的整型變數tmp,x引用的是tmp的空間。
const int &x =10;
//引用字面常量
//int tmp = 10;
//const int &x =tmp;
漫談C 裡的「引用」
引用 是c 新增的概念,注意這裡的 並不是 取位址 的含義。引用 reference 簡單的說就是乙個物件的別名。用物件來初始化引用後,那麼物件的名字或引用的名字都指向 refer to 該物件,如 int a 10 int ra a ra是a的別名 人們常常會將引用和指標混淆,原因大概是因為c 編...
C 裡的父類物件引用子類例項的理解
物件導向的多型 父類可以引用子類物件。父類引用只能呼叫子類繼承父類的方法,父類引用不能呼叫子類獨有的方法。people newpeople new man bilu 如在 人類 類中引用乙個 男人 例項 子類引用不能直接賦值父類物件,除非將父類物件進行強制轉換 編譯ok,執行異常 man newma...
從彙編的角度看C 裡的引用和指標
c 裡有引用和指標,使用過c 的應該都知道它們的異同點。本文將從彙編的角度去觀察這2者的本質。使用也非常簡單,在左側編寫c 在右側就會直接顯示對應的組合語言,也可以根據需要的平台來選擇對應的編譯器 我們使用的c 如下,比較簡單 int main void 選擇的編譯器是x86 64 gcc 9.2,...