我必须得到平均值。在C ++中,因为我没有传递数组的长度 我不知道如何除以它。
以下是我在C ++中传递值的方法
extern "C" double Average (long [6]);
_Average proc
finit
mov ecx, 6 ; number of elements
mov ebx, [esp + 4] ; address of the array
fldz
L1:
fld REAL4 PTR [ebx] ; get elements of array
fadd
add ebx, 4
loop L1
fdiv DWORD PTR [esp + 4]
fwait
ret
_Average endp
答案 0 :(得分:1)
然后传递长度。或者,因为它是一个长度为6的固定大小的数组,所以假设它是6。
答案 1 :(得分:0)
你已经知道它长了六个元素,因为你将它用作循环计数(在ecx
中)并且它在原型中指定。唯一的选择是传递另一个带有长度的参数(正如你在纯C ++中必须做的那样)。
您还需要使用fild
代替fld
来加载long
,因为它不是浮点变量,而是将REAL4 PTR
更改为{{ 1}}。或者,将DWORD PTR
更改为long
。 (另一种方法是将float
更改为long
,但这会更改数据类型的大小,这需要进行更多修改。)