C語言可變參數 stdarg.h學習;
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void show_array(const double ar[], int n);
double * new_d_array(int n, ...);
int main()
{
double * p1;
double * p2;
p1 = new_d_array(5, 1.2, 2.3, 3.4, 4.5, 5.6);
p2 = new_d_array(4, 100.0, 20.00, 8.08, -1890.0);
show_array(p1, 5);
show_array(p2, 4);
free(p1);
free(p2);
return 0;
}
void show_array(const double ar[], int n)
{
int i = 0;
if (ar == NULL)
{
printf("不能為空!!!");
return 0;
}
for (i = 0; i < n; ++i)
{
printf(" ar[ %d ] = %f ", i, ar[i]);
}
printf("\n");
}
double * new_d_array(int n, ...)
{
double tic;
va_list ap;
double * array = NULL;
int index;
array = (double *)malloc(n * sizeof(double));
if (array == NULL)
{
printf("array is null!!");
}
va_start(ap, n);
for (index = 0; index < n; ++index)
{
*(array + index) = va_arg(ap, double);
}
va_end(ap);
return array;
}