C++中的指针与引用其实是一样的。从编译器的反汇编源代码可以看出,引用和指针编译器的实现都是一样的。但是在用高级语言编程时的理解是不一样的。

引用可以看作是对象的一个手柄并且是于具体的数据绑定的操作这个手柄就是操作这个变量或者对象,并且这个手柄是死的。

指针就是创造一个手柄去操作一些东西,这个手柄是活的,你可以任意的给这个手柄指向,然后通过拿这个手柄(*b)去拿这个对象或者变量。

 
  
  1. ;引用 
  2. 4:        int a = 5 ; 
  3. 00401028   mov         dword ptr [ebp-4],5 
  4. 5:        int & b  = a; 
  5. 0040102F   lea         eax,[ebp-4] 
  6. 00401032   mov         dword ptr [ebp-8],eax 
  7. 6:        int c = 2 ; 
  8. 00401035   mov         dword ptr [ebp-0Ch],2 
  9. 7:        b = c ; 
  10. 0040103C   mov         ecx,dword ptr [ebp-8] 
  11. 0040103F   mov         edx,dword ptr [ebp-0Ch] 
  12. 00401042   mov         dword ptr [ecx],edx 
  13. 8:        return 0; 
  14. 00401044   xor         eax,eax 
  15.  
  16. //指针 
  17. 4:        int a = 5 ; 
  18. 00401028   mov         dword ptr [ebp-4],5 
  19. 5:        int * b  = &a; 
  20. 0040102F   lea         eax,[ebp-4] 
  21. 00401032   mov         dword ptr [ebp-8],eax 
  22. 6:        int c = 2 ; 
  23. 00401035   mov         dword ptr [ebp-0Ch],2 
  24. 7:        *b = c ; 
  25. 0040103C   mov         ecx,dword ptr [ebp-8] 
  26. 0040103F   mov         edx,dword ptr [ebp-0Ch] 
  27. 00401042   mov         dword ptr [ecx],edx 
  28. 8:        return 0; 
  29. 00401044   xor         eax,eax