如何在ansi c中打印va_list的内容

iswrvxsc  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(151)

我试图打印一个va_list的内容,我想传递一个数组给它,我得到了gibrish的回报

int printVA(int num_args,...);

int main(int argc, const char * argv[])
{
    int numArgs = 3;
    int arr [3];
    arr[0]=183;
    arr[1]=184;
    arr[2]=15;
    printVA(numArgs,arr);

    return 0;
}



int printVA(int num_args,...){
    va_list arg_list;
    int my_arg;
    va_start(arg_list, num_args);

    for(int i = 0; i<num_args;i++){
        my_arg = va_arg(arg_list, int);
        printf("%d\n", my_arg);
    }
    va_end(arg_list);
    return 1;

}

这就是我得到的

1606416584
15
1606416584
sdnqo3pr

sdnqo3pr1#

你调用的方法不正确,传递参数本身,而不是参数的数组:

printVA(numArgs, arr[0], arr[1], arr[2]);

或者简单地说:

printVA(numArgs, 183, 184, 15);

另一方面,如果你真的想传递数组,va_list不是正确的解决方案。

相关问题