指標和引用
阿新 • • 發佈:2021-10-14
指標
指標:指標是一個變數,只不過這個變數儲存的是一個地址,指向記憶體的一個儲存單元;
引用:跟原來的變數實質上是同一個東西,只不過是原變數的一個別名而已。
區別
-
引用不可以為空,當被建立的時候,必須初始化,而指標可以是空值,可以在任何時候被初始化。
-
指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)
-
指標的值可以為空,但是引用的值不能為NULL,並且引用在定義的時候必須初始化;
-
指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後就不會再改變了。
-
”sizeof引用”得到的是所指向的變數(物件)的大小,而”sizeof指標”得到的是指標本身的大小;
-
指標和引用的自增(++)運算意義不一樣;
-
如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩漏;
-
其實,所謂的可以有const指標,但是沒有const引用 是指: const指標:如 int* const p; 是可以有的,此時指標包含的地址是常量,不能修改,但可修改指標指向的資料。 注意與 const int* p;的區別,此時指標指向的資料為常量,不能修改,但可以修改指標包含的地址,即指標可以執向其他地方。 而所謂沒有const引用,具體指沒有int& const a這種形式,而const int& a是有的。前者指引用本身即別名不可以改變,這是當然的,所以不需要這種形式,後者指引用所指的值不可以改變。