C 指標與引用

2021-09-24 23:04:29 字數 1488 閱讀 9849

指標是c++提供的一種頗具特色的資料型別,允許直接獲取和操縱資料位址,實現動態儲存分配。

乙個資料物件的記憶體位址稱為該資料物件的指標。指標可以表示各種資料物件,如簡單變數、陣列、陣列元素、結構體,甚至函式。即指標具有不同的型別,可以指向不同的資料儲存體。

引用是某乙個變數或物件的別名,對引用的操作與對其所繫結的變數或物件的操作完全等價。引用是c++乙個很重要的特性。

引用的特點:

1. 一定要初始化

2. 引用不能引用不可以取位址的資料

3. 引用不能改變

4. 引用只能使用,引用變數所引用的資料

答:(1)非空區別在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果使用乙個變數並讓它指向乙個物件, 但是該變數在某些時候也可能不指向任何物件,這時應該把變數宣告為指標,因為這樣可以賦空值給該變數。相反,如果變數肯定指向乙個物件,例如,設計不允許變數為空,這時就可以把變數宣告為引用。不存在指向空值的引用這還是個事實,意味著使用引用的**效率比使用指標要高。

(2)合法性區別在使用引用之前不需要測試它的合法性。相反,指標則應該總是被測試,防止其為空。

(3)可修改區別。指標與引用的另乙個重要的區別是指標可以被重新賦值以指問另乙個不同的物件。但是引用則總是指向在初始化時被指定的物件,以後不能改變,但是指定的物件其內容可以改變。

(4)應用區別。總的來說,在以下情況下應該使用指標:一是考慮到存在不指向任何物件的可能(在這種情況下,能夠設定指標為空);二是需要能夠在不同的時刻指向不同的物件(在這種情況下,你能改變指標的指向)。如果總是指向乙個物件並且一旦指向乙個物件後就不會改變指向,那麼應該使用引用。

//用變數a給出下面的定義

//(1)乙個整型數

int a;

//(2)乙個指向整型數的指標

int *a;

//(3)乙個指向指標的指標,它指向的指標是指向乙個整型數

int **a;

//(4)乙個有10個整型數的陣列

int a[10];

//(5)乙個有10個指標的陣列,該指標是指向乙個整型數的

int *a[10];

//(6)乙個指向有10個整型數陣列的指標

int (*a)[10];

//(7)乙個指向函式的指標,該函式有乙個整型引數並返回乙個整型數

int (*a)(int);

//(8)乙個有10個指標的陣列,該陣列裡的指標指向乙個函式,該函式有乙個整形引數並返回乙個整型數

int (*a[10])(int);

C 指標與引用

include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...

C 指標與引用

從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...

C 引用與指標

1 引用即給當前物件起了個別名,通過將宣告符寫成 t c的形式來定義引用,其中t是變數名,c是當前物件的名字 修改別名相當於修改當前物件,引用必須初始化,且不能更改指向物件 example int a 10 定義a及初始化 int c a 定義a的引用c cout2 引用不是物件,只是對目前已經存在...