天天看點

C Primer Plus 16章 程式設計練習第7題

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;
}

           

繼續閱讀