我們用va_arg(ap, type)取出一個參數的時候,關於va_arg中的type:
https://blog.csdn.net/major2007/article/details/6224515
https://www.cnblogs.com/shiweihappy/p/4246442.html
1. 錯誤代碼
void fun(int a, ...)
{
int len, n;
int arg;
va_list args;
va_start(args, a);
//len = strlen(a);
arg = va_arg(args, char);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
printf("len=%d,n=%d\n", len, n);
va_end(args);
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
fun(a, b, c, d);
return 0;
}
1.1 錯誤結果
1.2 錯誤原因,可變參數解析的時候,類型必須一致
2. 正確代碼:
void fun(int a, ...)
{
int len, n;
int arg;
va_list args;
va_start(args, a);
//len = strlen(a);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
arg = va_arg(args, int);
printf("n=%d, arg = %d\n", n, arg);
printf("len=%d,n=%d\n", len, n);
va_end(args);
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
fun(a, b, c, d);
return 0;
}
2.2 正確結果