指標和引用

2021-04-25 02:49:12 字數 1188 閱讀 5731

一、先看一段**:

#include

using

namespace std;

void

freeptr1(int* p1)

void

freeptr2(int*& p2)

void

main()

思考:在

freeptr1

和freeptr2

的比較中,你能發現它們的不同點嗎?

二、對**進行解釋:

#include

using

namespace std;

void

freeptr1(int* p1)

void

freeptr2(int*& p2)

void

main()

引用和指標

★ 相同點:

1. 都是位址的概念;

指標指向一塊記憶體,它的內容是所指記憶體的位址;引用是某塊記憶體的別名。

★ 區別:

1. 指標是乙個實體,而引用僅是個別名;

2. 引用使用時無需解引用(*),指標需要解引用;

3. 引用只能在定義時被初始化一次,之後不可變;指標可變;

引用「從一而終」 ^_^

4. 引用沒有 const,指標有 const,const 的指標不可變;

5. 引用不能為空,指標可以為空;

6. 「sizeof 引用」得到的是所指向的變數(物件)的大小,而「sizeof 指標」得到的是指標本身(所指向的變數或物件的位址)的大小;

typeid(t) == typeid(t&) 恒為真,sizeof(t) == sizeof(t&) 恒為真,

但是當引用作為成員時,其占用空間與指標相同(沒找到標準的規定)。

7. 指標和引用的自增(++)運算意義不一樣;

★ 聯絡

1. 引用在語言內部用指標實現(如何實現?)。

2. 對一般應用而言,把引用理解為指標,不會犯嚴重語義錯誤。引用是操作受限了的指標(僅容許取內容操作)。

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

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

指標和引用

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...

指標和引用

1.從記憶體上來講 系統為指標分寸記憶體空間,而引用與繫結的物件共享記憶體空間,系統不為引用變數分配內容空間。2指標初始化以後可以改變指向的物件,而引用定義的時候必須要初始化,且初始化以後不允許再重新繫結物件。3.所以引用訪問物件是直接訪問。指標訪問物件是間接訪問。4。如果pa是指標,那麼 pa就是...