在下面的示例中,我想将数组的内容传递给接收可变数量参数的函数。
换句话说,我想传递给printf
的内容foo
按值传递这些参数,从而将这些参数传递到堆栈上。
#include <stdarg.h>
#include <stdio.h>
void main()
{
int foo[] = {1,2,3,4};
printf("%d, %d, %d, %d\n", foo);
}
我知道这个例子看起来很愚蠢,因为我可以使用printf("%d, %d, %d, %d\n", 1,2,3,4);
。想象一下我正在打电话void bar(char** a, ...)
相反,数组是我从 RS232 收到的东西......
EDIT
换句话说,我想避免这种情况:
#include <stdarg.h>
#include <stdio.h>
void main()
{
int foo[] = {1,2,3,4};
switch(sizeof(foo))
{
case 1: printf("%d, %d, %d, %d\n", foo[0]); break;
case 2: printf("%d, %d, %d, %d\n", foo[0], foo[1]); break;
case 3: printf("%d, %d, %d, %d\n", foo[0], foo[1], foo[2]); break;
case 4: printf("%d, %d, %d, %d\n", foo[0], foo[1], foo[2], foo[3]); break;
...
}
}