这是对我的排序程序的测试。它设置了 7 个变量来保存浮点值,然后将它们分配给一个数组,该数组用于查找最大值。
神奇之处在于对 myMax 的调用:
float mmax = myMax((float *)&arr,(int) sizeof(arr)/sizeof(arr[0]));
这很神奇,不是吗?
myMax 需要一个浮点数组指针 (float *),所以我使用 &arr 来获取数组的地址,并将其转换为浮点指针。
myMax 还期望数组中的元素数为 int。我通过使用 sizeof() 给我数组的字节大小和数组的第一个元素来获得该值,然后将总字节数除以每个元素中的字节数。(我们不应该猜测或硬编码 int 的大小,因为它在某些系统上是 2 个字节,而在我的 OS X Mac 上是 4 个字节,在其他系统上可能是其他东西)。
注意:当您的数据可能包含不同数量的样本时,所有这些都很重要。
这是测试代码:
#include <stdio.h>
float a, b, c, d, e, f, g;
float myMax(float *apa,int soa){
int i;
float max = apa[0];
for(i=0; i< soa; i++){
if (apa[i]>max){max=apa[i];}
printf("on i=%d val is %0.2f max is %0.2f, soa=%d\n",i,apa[i],max,soa);
}
return max;
}
int main(void)
{
a = 2.0;
b = 1.0;
c = 4.0;
d = 3.0;
e = 7.0;
f = 9.0;
g = 5.0;
float arr[] = {a,b,c,d,e,f,g};
float mmax = myMax((float *)&arr,(int) sizeof(arr)/sizeof(arr[0]));
printf("mmax = %0.2f\n",mmax);
return 0;
}