GManNickG und Christoph Antworten sind gut, aber variadic Funktionen ermöglichen es Ihnen, in den ... Parameter was Sie wollen, nicht nur ganze Zahlen. Wenn Sie in Zukunft wollen, um viele Variablen und Werte von verschiedenen Typen in eine Funktion zu schieben, ohne variadic Funktion zu verwenden, weil es zu schwierig oder zu kompliziert für Sie ist, oder Sie mögen den Weg nicht Um es zu verwenden oder die erforderlichen Header nicht zu verwenden, können Sie immer void**
Parameter verwenden.
Zum Beispiel Stephan202 posted:
double average(int count, void** params)
{
int j;
double tot = 0;
for (j=0; j<count; j++)
tot+=*(double*)params[j];
return tot/count;
}
Jetzt ist es wie auf diese Weise verwenden:
int _tmain(int argc, _TCHAR* argv[])
{
void** params = new void*[3];
double p1 = 1, p2 = 2, p3 = 3;
params[0] = &p1;
params[1] = &p2;
params[2] = &p3;
printf("Average is: %g\n", average(3, params));
system("pause");
return 0;
}
für vollständigen Code:
double average(int count, ...)
{
va_list ap;
int j;
double tot = 0;
va_start(ap, count); //Requires the last fixed parameter (to get the address)
for(j=0; j<count; j++)
tot+=va_arg(ap, double); //Requires the type to cast to. Increments ap to the next argument.
va_end(ap);
return tot/count;
}
dies kann auch geschrieben werden
#include "stdafx"
#include <process.h>
double average(int count, void** params)
{
int j;
double tot = 0;
for (j=0; j<count; j++)
tot+=*(double*)params[j];
return tot/count;
}
int _tmain(int argc, _TCHAR* argv[])
{
void** params = new void*[3];
double p1 = 1, p2 = 2, p3 = 3;
params[0] = &p1;
params[1] = &p2;
params[2] = &p3;
printf("Average is: %g\n", average(3, params));
system("pause");
return 0;
}
OUTPUT:
ist Durchschnitt: 2
Drücken Sie eine beliebige Taste, um fortzufahren. . .
Wie andere haben darauf hingewiesen, eine variadische Funktion ist speziell, was Sie suchen. Aber wenn Sie nicht beabsichtigen, eine Mischung von Typen an die Funktion zu senden, ist es besser, wenn Sie stattdessen einen Zeiger oder eine Referenz an einen Vektor übergeben, der Ihre Parameter enthält. –