qq_22305005
2017-03-01 14:39
采纳率: 25%
浏览 1.0k

va_arg读取一个向量?

我想要实现的功能是:有个向量k[6]={200,300,400,500,600,700};我要用va_arg读取每一个值,照理来说 int j=va_arg(arg_ptr,int);循环后,指针就会自动挨个读数,但是运行结果和我想的不一样。求大神指点

// 用c++执行
#include <iostream>
#include <stdarg.h>
using namespace std;
void simple_va_fun(int i,int num,int num2,...);
int main(int argc,char *argv[])
{
    //     simple_va_fun(100);  
    //     simple_va_fun(100,200);
    int num=6;
    int num2=3;
    int k[6]={200,300,400,500,600,700};
    simple_va_fun(100,6,3,k[0],'a','b','c');

    return 0;
}
void simple_va_fun(int i,int num,int num2,...)//固定参数分别是i ,num,num2
{  
    va_list   arg_ptr;   //定义可变参数指针

    va_start(arg_ptr,num2);   // num2为最后一个固定参数,所以arg_ptr是num2地址的下一个地址,即第一个变量地址

    for (int p=0;p<num;p++)//
    {
        int j=va_arg(arg_ptr,int); //重复获得整数值
        printf( "%d\n",j); 
    }  //返回每一个类型为int的可变参数,一直到第六个可变参数,第七个可变参数是a

    //------------------------------------------要得到char类型数据----------------------------------

    char k=va_arg(arg_ptr,char); //到了第七个变参数值,是a。注意,i,num,num2是固定参数值,num2后面的开始才是变参数值
    printf( "%c\n",k);

    va_end(arg_ptr);        //  清空参数指针
    return;  
} 
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 战在春秋 2017-03-01 22:14
    已采纳

    simple_va_fun(100,6,3,k[0],'a','b','c');

    如上,可变参数只有四个,k[0],'a','b','c'。
    k[1]至k[5]并没有传入函数。

    点赞 打赏 评论

相关推荐 更多相似问题