首页 > 试题广场 >

下面是使用了可变函数的程序片断: #incl

[问答题]

下面是使用了可变函数的程序片断:

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

new_d_array()函数接受一个iit参数和数量可变的double参数。该函数返回一个指向malfoc()分配的内存块的指针。int参数指定动态数组中的元素个数:double值用于初始化元素(第个值赋予第一个元素,依此类推)。提供show_array()和new_d_array()的代码,使程序完整。

推荐
#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;
 for(i=0; i<n; i++)
 printf("%g\t", ar[i]);
 printf("\n");
}
double * new_d_array(int n, ...)
{
 double *p;
 int i;
 va_list ap; 
 p = (double *) malloc(n*sizeof(double));
 va_start(ap, n);
 for(i=0; i<n; i++)
 p[i] = va_arg(ap, double);
 va_end(ap); 
 return p;
}

发表于 2018-03-18 21:52:10 回复(0)