1.指標可以在執行時改變所指向的值,但是引用一旦與某個物件繫結後就不可以改變了;
2.編譯時,「符號表「記錄的是變數名和變數位址,指標在符號表上記錄的是指標變數的位址,而引用記錄的是引用位址的位址值,而符號表在生成後就不會再改,所以指標可以改變指向的值,而引用就不可以再改變了;
3.指標在定義時會被分配記憶體空間,而引用不會被分配記憶體空間,是和引用物件共用乙個記憶體空間,當然,引用可以改變那個記憶體空間的值;
所以,引用本質上是乙個變數的別名。
例子:int i;
int *a = &i;//這裡a是乙個指標,它指向變數i
int &b = i;//這裡b是乙個引用,它是變數i的引用,引用是什麼?它的本質是什麼?下面會具體講述
int * &c = a;//這裡c是乙個引用,它是指標a的引用
int & *d;//這裡d是乙個指標,它指向引用,但引用不是實體,所以這是錯誤的
void function(int &a)
int main()
指標引用和引用指標的區別
c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...