C / C ++ va_list gibt Argumente nicht richtig zurück

Ich habe ein Problem mit der Verwendung von va_list. Der folgende Code funktioniert für ein int:

main() {
  int f1=1;
  float** m = function(n,f1);
}

float** function(int n,...) {

  va_list mem_list;
  va_start(mem_list, n);
  for (int i=0;i<n;i++) {
    for (int j=0;j<n;j++) {
      //m[i][j]=va_arg(mem_list,float);
      int f = va_arg(mem_list,int);
      printf("%i \n",f);
    }
  }

  va_end(mem_list);
  return NULL;
}

Wenn ich jedoch zu einem Schwimmer wechsle, d.h.

float f1=1.0;
float f = va_arg(mem_list,float);
printf("%f \n",f);

Es wird nicht der richtige Wert zurückgegeben (der Wert ist 0,00000). Ich bin sehr verwirrt darüber, was passiert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage