引用和指標一(側重引用)

2021-08-21 13:18:42 字數 1266 閱讀 3499

1、一般而言,&在 =邊,表示引用;                       

&在 =邊,表示取位址

eg、int &rn = a;//rn為普通變數a引用,即為a的別名,共享記憶體,佔同乙個記憶體空間。        

int* p = &a;//定義指標p並初始化為a的位址,即p指向a,其中a為普通變數(省略其定義)

2、引用必須也只能在宣告的時候初始化,以後均不能把該引用作為其他變數名的別名。

3、野指標:指標p沒有進行初始化---->此時指標p為野指標----->若此時對其內容進行賦值,會產生無法預料的情況,可能導致程式崩潰。      

最好養成定義指標p就直接給他初始化,一定要避免野指標的出現!!!

4、  引數為指標引用型,如void swap(char *&x,char *&y){}  則傳入函式的就是實參,不是形參!【引用直接在原記憶體位址上修改內容,可看成可以傳出函式。】

如果引數不為指標引用,那麼指標交換只能在swap中有效,無法帶出函式體,因為在函式體中,函式棧會分配兩個臨時的指標變數分別指向兩個指標引數,對實際的字串無效。

如果引數採用二級指標,則同樣可以傳出函式,達到字串交換的目的。

5、引數引用

const float pi = 3.14f;

float f;//全域性變數

float f1(float r)

float& f2(float r)

int main()

6、常量變數和常量引用

把const放在引用之前表示宣告的是乙個常量引用。不能使用常量引用修改引用的變數的值。

eg…(1)const int b = 10;

int &c = b;//錯誤!b已經宣告為常量,而c為變數,不可進行賦值。

(2)int a = 7;

const int &d = a;

d++;//錯誤!d是常量引用,不能對其進行自加等操作。

即對於常量型別的變數,其引用也必須是常量型別的。

對於非常量型別的變數,其引用可以是常量型別的,也可以是非常量型別的。

無論什麼時候,都不能使用常量引用修改其引用的變數的值。

簡單的說,小範圍 = 大範圍;//正確

大範圍 = 小範圍;//錯誤

引用和指標二(側重異同)

引用指標的區別 1 初始化要求不同。引用在建立的同時必須初始化,即引用到乙個有效的物件 指標在定義的時候可以不必初始化,可以在定義後面的任何地方重新賦值。2 可修改行不同。引用一旦被初始化為指向乙個物件,它就不能被改變為另乙個物件的引用 指標在任何時候都可以改變為指向另乙個物件。給引用賦值並不是改變...

引用和指標的巨集觀比對 引用和指標(一)

目錄 一般性變數引用的關鍵規則 引數引用的常見錯誤 引用和指標的區別是什麼?引用為什麼比指標安全?對於常量型別的變數,其引用必須是常量型別的,對於非常量型別的變數,其引用可以是常量型別的,也可以是非常量型別的。但無論什麼情況,都不能使用常量引用去修改引用的變數的值。include include i...

指標和引用,const 指標和const 引用

指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...