C语言-宏实现的按值传递任意大小数组

利用stdarg.h库支持的宏函数来接收数据实现储存任意大小的数组

 1 #include<stdio.h>
 2 #include<stdlib.h>//malloc
 3 #include<stdarg.h>//宏支持原型
 4 #define SIZE 5
 5 double * CreateArray(int p,...){
 6   va_list pt;//初始化参数列表
 7 
 8   va_start(pt,p);//参数列表pt有p个参数
 9 
10   double *z=(double *)malloc(p*sizeof(double));//分配空间
11   for(int x=0;x<p;x++)
12     z[x] = va_arg(pt,double);//每次调用va_arg完都会指向下一个参数
13   va_end(pt);//清理参数列表
14 
15   return z;//返回指针
16 }
17 void ShowArray(const double ar[],int size){
18   for(int x=0;x<size;x++)
19   {
20     printf("%f ",ar[x]);
21 
22     if((x+1)%8==0)
23       printf("\n");
24   }
25 }
26 void main(void){
27   ShowArray(CreateArray(SIZE,2.4,3.6,4.2,5.0,6.7),SIZE);
28 }
View Code

 

posted @ 2020-05-05 12:31  四字又名  阅读(352)  评论(0)    收藏  举报