![](https://csdnimg.cn/release/download_crawler_static/88410771/bg6.jpg)
如果函数返回的是大型结构的数据,那么由调用方函数(Caller)负责分配空间,给结构体分配指针,再把指
针作为第一个参数传递给被调用方函数。然后由被调用方函数填充数据。
第17课、 用指针作函数的参数
push OFFSET ?multi_result@@3HA ; multi_result
push OFFSET ?sum_result@@3HA ; sum_result
push 456 ; 000001c8H
push 123 ; 0000007bH
call ?f@@YAXHHPAH0@Z ; f
add esp, 16 ; 00000010H
; Line 19
moveax, DWORD PTR ?multi_result@@3HA ; multi_result
push eax
movecx, DWORD PTR ?sum_result@@3HA ; sum_result
push ecx
push OFFSET $SG5562
call _printf
add esp, 12 ; 0000000cH
;
moveax, DWORD PTR _x$[ebp]
add eax, DWORD PTR _y$[ebp]
movecx, DWORD PTR _sum$[ebp]
movDWORD PTR [ecx], eax
?f@@YAXHHPAH0@Z PROC ; f
; File C:\Users\libit\source\repos\L017\L017\L017.cpp
; Line 7
push ebp
movebp, esp
; Line 8
moveax, DWORD PTR _x$[ebp]
add eax, DWORD PTR _y$[ebp]
movecx, DWORD PTR _sum$[ebp]
movDWORD PTR [ecx], eax
; Line 9
movedx, DWORD PTR _x$[ebp]
imul edx, DWORD PTR _y$[ebp]
moveax, DWORD PTR _multi$[ebp]
movDWORD PTR [eax], edx
; Line 10
pop ebp
ret 0
?f@@YAXHHPAH0@Z ENDP ; f
//优化
?f@@YAXHHPAH0@Z PROC ; f