我刚开始学习C语言,试图创建一个从堆栈获取参数的函数。当我知道所有参数都是相同类型时,但它仅适用于int。
这是我所做的:
void Test1(double first_arg, ...)
{
double *a = &first_arg;
printf("arg[0]: %f\narg[1]: %f \narg[2]: %f\n", a[0], a[1], a[2]);
}
void Test2(int first_arg, ...)
{
int *a = &first_arg;
printf("arg[0]: %d\narg[1]: %d \narg[2]: %d\n", a[0], a[1], a[2]);
}
int main()
{
printf("Test1:\n");
Test1(1.0, 2.0, 3.0);
printf("\nTest2:\n");
Test2(1, 2, 3);
return 0;
}
Console:
Test1:
arg[0]: 1.000000
arg[1]: 0.000000
arg[2]: 0.000000
Test2:
arg[0]: 1
arg[1]: 2
arg[2]: 3
我在这里缺少什么?我该怎么做才能解决这个问题。