說白了c++中的引用就是指標。。至少底層實現是這樣。。
乙個例子說明。。一下
#include int main(int argc , char *argv)
1: #include 2:
3: int main(int argc , char *argv)
4:
00401057 pop edi
00401058 pop esi
00401059 pop ebx
0040105a mov esp,ebp
0040105c pop ebp
0040105d ret
begin
eax = 00781798 ebx = 7efde000
ecx = 00000001 edx = 00781810
esi = 00000000 edi = 00000000
eip = 00401010 esp = 0018ff4c
ebp = 0018ff88 efl = 00000212
0018ff25 02 00 00 00 08 00 00 .......
0018ff2c 02 00 00 00 44 2e 42 ....d.b
0018ff33 00 83 00 00 00 03 00 .......
0018ff3a 00 00 44 ff 18 00 a8 ..d....
0018ff41 13 40 00 54 ff 18 00 [email protected]...
0018ff48 23 12 40 00 49 11 40 #[email protected].@
end0018ff25 cc cc cc cc cc cc cc 燙燙燙.
0018ff2c cc cc cc cc cc cc cc 燙燙燙.
0018ff33 cc cc cc cc cc cc cc 燙燙燙.
0018ff3a cc cc 44 ff 18 00 44 燙d...d [ebp-8h],[ebp-0ch]均是ebp-4h 即區域性變數位址
0018ff41 ff 18 00 0c 00 00 00 ....... 12 由9---->12
0018ff48 88 ff 18 00 49 11 40 ....i.@
0018ff4f 00 01 00 00 00 98 17 .......
8: ++c; 引用操作
0040103b mov edx,dword ptr [ebp-0ch]
0040103e mov eax,dword ptr [edx]
00401040 add eax,1
00401043 mov ecx,dword ptr [ebp-0ch]
00401046 mov dword ptr [ecx],eax
9: *b += 2; 指標操作
00401048 mov edx,dword ptr [ebp-8]
0040104b mov eax,dword ptr [edx]
0040104d add eax,2
00401050 mov ecx,dword ptr [ebp-8]
00401053 mov dword ptr [ecx],eax
不多說,操作方式基本一樣(vc6 debug版本)
引用是不是指標一目了然。。
C 指標和引用的異同點
相同點 不同點 指標是乙個實體,而引用僅僅是乙個別名 在使用時候引用無需解引用,而指標需要解引用 指標只能在定義時別初始化一次,之後不可在變,指標一般可變 除非常量指標 引用不能為空而指標可以為空 sizeof引用 得到的是所指向的物件的大小,而 sizeof指標 得到的是指標本身的大小 聯絡 引用...
C 之指標和引用的異同點
指標和引用看上去很像,但他們有著很大的區別 指標和引用的本質區別是 指標是乙個實體變數,而引用是乙個物件的別名。基於此區別,指標和引用就有了很多不同的應用不同。首先,引用不能為空,沒有物件又怎麼會有別名呢,指標本身就是個物體,記憶體值可以隨意。指標可以隨便變化,而引用只能初始化一次不可賦值 引用相當...
C 指標與引用的異同
目錄 指標和引用的原理非常的相似,所以很多時候尤其是面試的時候經常會拿來比較。本文來梳理一下引用和指標的一些異同。兩者都是關於位址的概念。指標本身是乙個變數,它儲存的值是一塊記憶體位址,而引用是某乙個記憶體的別名。我們可以使用指標或引用修改對應記憶體的值。我們無法宣告乙個變數引用再給它賦值,只能在宣...