回复 18楼 zhaogay
一般跟编译器相关的问题我不想讨论,因为这种不是标准的标准没必要深究,一试便知!
下面是 c = *fun3(2) - *fun3(1); 的反汇编。
事实就是最后在拿地址里面的值做减法。当然,我这是vs2012
00E33BD5
push
2
00E33BD7
call
fun3 (0E311E5h)
00E33BDC
add
esp,4
00E33BDF
mov
esi,eax
00E33BE1
push
1
00E33BE3
call
fun3 (0E311E5h)
00E33BE8
add
esp,4
00E33BEB
mov
ecx,dword ptr [esi]
00E33BED
sub
ecx,dword ptr [eax]
00E33BEF
mov
dword ptr [c],ecx