c 指標和引用異同

2021-06-29 15:08:27 字數 1859 閱讀 2719

說白了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 指標與引用的異同

目錄 指標和引用的原理非常的相似,所以很多時候尤其是面試的時候經常會拿來比較。本文來梳理一下引用和指標的一些異同。兩者都是關於位址的概念。指標本身是乙個變數,它儲存的值是一塊記憶體位址,而引用是某乙個記憶體的別名。我們可以使用指標或引用修改對應記憶體的值。我們無法宣告乙個變數引用再給它賦值,只能在宣...