個人筆記 指標和引用的區別

2021-06-20 06:27:52 字數 959 閱讀 3596

1、指標是c裡面最重要的一中特殊變數。其大小是4位元組的無符號整形,能儲存的值是0x00000000-0xffffffff(32位作業系統下) (64位作業系統下定址範圍超級大)

指標是c語言的靈魂,這個變數裡存的是記憶體位址;通過位址能找到對應的變數單元,就像送快遞乙個,的需要乙個確切地送貨位址,沒有位址貨就不知道送**,計算機裡稱為記憶體洩露。

引用也是位址,是c++語言的乙個擴充套件;引用時某乙個變數的別名;對引用的操作和對這個變數的直接操作時一樣的;

2、指標為空是不能對該指標做操作的,這會引用錯誤的訪問,會引起程式的崩潰!所以c語言裡對指標的操作要相當的仔細。

但是你可以定義乙個空指標!

比如

int * p = null;

而引用則不能為空,申明乙個引用,不是新定義了乙個變數,作業系統不會為其分配新的記憶體空間,申明引用時必須同時對其進行初始化。

當然這樣寫,編譯器是可以通過的:

int * p = null;

int &q = *p;

這樣感覺就是定義了乙個空引用....。

如果要申明引用,像這種方式是不對的!

比如,定義乙個string &stl;  因為這個引用不知道是誰的引用!

要這麼定義:

string str("reference");

string &rstr = str;

3、sizeof

sizeof(引用) 這標示的是引用所對應的變數型別的大小。

sizeof(指標) 那麼這標示的是這個指標的大小,32位機子就是4;

eg:

chara = 10,&ra=a;

char*p = &a;

sizeof(ra) 這其實就是sizeof(a)  其值就是char 的大小 為1

而sizeof(p) 則是指標大小 為 4

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

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

傳指標和傳指標引用的區別 指標和引用的區別(本質)

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...

傳指標和傳指標引用的區別 指標和引用的區別(本質)

指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...