面試常考之引用和指標的區別

2021-09-27 09:59:41 字數 852 閱讀 8482

**引用和指標的區別
** 相同點:**

都表示位址的概念。指標指向一塊記憶體,它的內容所指記憶體的位址;而引用則是某塊記憶體的別名。

** 不同點:**

①指標是乙個變數,需要分配記憶體空間。而引用僅僅只是變數的別名,不需要分配記憶體空間。

②指標在定義的時候不一定要初始化(一般情況下需要初始化,避免野指標),並且指向的空間可變。引用在定義的時候必須進行初始化,以後不能夠改變;(注:引用的值不能為null。)

③指標可以有多級指標( int** p1; // 合法。指向指標的指標),但是沒有多級引用( int&& p4; // 非法。指向引用的引用是非法的)。

④指標有const,const的指標不可變。引用沒有const,(具體指沒有 int& const a這種形式,而const int& a是有的,前者指引用本身即別名不可改變,引用本來就不可改變,所以不需要這種形式,後者指引用所指的值不可改變)。

⑤sizeof 指標得到的是指標本身的大小(在32位機中,任意型別指標在記憶體上所佔空間大小均為4位元組)。而sizeof 引用,得到的是其指向的變數本身的大小。

⑥指標和引用的自增(++)運算意義不一樣。指標是指向下乙個空間。而引用是引用的變數值加1。

⑦指標訪問乙個變數是間接訪問。而引用訪問乙個變數是直接訪問。

⑧引用型別是安全的,而指標不是(引用比指標多了型別檢查,防止其為空)。

⑨指標可以指向陣列,而引用不可以引用陣列。

補充①:理論上,對於指標的級數沒有限制,但是引用只能是一級。

補充② int*& p2; // 合法。指向指標的引用。

int&* p3; // 非法。指向引用的指標是非法的。

面試常考題 c 中指標和引用的區別?

指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元 而引用僅是個別名 引用使用時無需解引用 指標需要解引用 引用只能在定義時被初始化一次,之後不可變 指標可變 指標 int a 1 int c 2 int b a cout b cout b cout b cout b 結果 1...

面試 指標和引用的區別

一 指標和引用的定義和性質區別 1 指標 指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元,即指標是乙個實體 而引用跟原來的變數實質上是同乙個東西,只不過是原變數的乙個別名而已。如 int a 1 int p a int a 1 int b a 上面定義了乙個整形變數和乙個指...

指標引用和引用指標的區別

c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...