, . va_arg() , . , 1.0 , 1. 1 double, - .
:
double calculateAverage(int num,...)
{
va_list argumentList;
double sum=0;
int i;
va_start(argumentList,num);
printf("%p", &num);
unsigned char * c = #
for(i = 0; i < num * sizeof(double) + 4; i++, c++)
{
printf(" %02x", *c);
}
printf("\n");
for(i = 0; i < num; i++)
{
sum += va_arg(argumentList,double);
}
va_end(argumentList);
return(sum/num);
}
printf("%f\n",calculateAverage(3,1,2,3));
0xbfc507d0 03 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 ...
-0.054776
printf("%f\n",calculateAverage(3,1.0,2.0,3.0));
0xbfd15290 03 00 00 00 00 00 00 00 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 00 00 08 40
2.000000
1 00 00 00 01, 1.0 00 00 00 00 00 00 f0 3f ( ).
, 00 00 00 01 00 00 00 02 double, .