Cpp / 引用的本质
生活随笔
收集整理的這篇文章主要介紹了
Cpp / 引用的本质
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、答案
一個指針變量,即:T *const 。
二、分析
int a = 0;int &b = a; // int *const pb = &a;int c = 3;int *p = &c;b = *p; // *pb = *p int a = 0; 009925F2 mov dword ptr [a],0 ; *(&a) = 0int& b = a; 009925F9 lea eax,[a] ; eax = &a 009925FC mov dword ptr [b],eax ; *(&b) = &a,實際上 b 就是一個指針變量,里面保存的是 a 的地址。int c = 4; 009925FF mov dword ptr [c],4 ; *(&c) = 4int* p = &c; 00992606 lea eax,[c] ; eax = &c 00992609 mov dword ptr [p],eax ; *(&p) = &cb = *p; 0099260C mov eax,dword ptr [b] ; eax = *(&b), *(&b) == &a,變量 a 的地址賦值給了 eax 。 0099260F mov ecx,dword ptr [p] ; ecx = *(&p), *(&p) == &c,變量 c 的地址賦值給了 ecx 。 00992612 mov edx,dword ptr [ecx] ; edx = *(&c),變量 c 的值賦值給了 edx 。 00992614 mov dword ptr [eax],edx ; *(&a) = *(&c),變量 c 的值賦值給了變量 a 。三、其他
| 匯編代碼 | 作用 |
| [a] | 取變量 a 的地址,即:&a |
| dword ptr [a] | 獲取變量 a 的值,即:在內(nèi)存的 a 的地址的位置獲取雙字大小的數(shù)據(jù),即:*(&a) 。 |
| dword ptr [ecx] | 在內(nèi)存中 ecx 中的值所代表的地址上的雙字大小的數(shù)據(jù),即:*ecx 。 |
?
(SAW:Game Over!)
總結(jié)
以上是生活随笔為你收集整理的Cpp / 引用的本质的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gcc / -L 和 -Wl,-rpat
- 下一篇: Cpp / Hash 所得字符串转成 H