关于va_copy的问题,函数变参 4C

#include
#include
void print(char* format,...);
void print(char* format,...)
{
va_list ptr;
va_list ptr_tmp;
va_start(ptr, format);
va_copy(ptr_tmp,ptr);
printf("print ptr: %p,%p\n",format, ptr);

    vfprintf(stdout, format, ptr);
    vfprintf(stdout, format, ptr);

    printf("print ptr: %p,%p\n",format, ptr);
    va_end(ptr);

}
int main()
{
int i=3,j=4;
char a[20]="hello world";
print("%d,%d,%s\n",i,j,a);
return 0;
}

 为什么会产生段错误,
 而把第二个 vfprintf(stdout, format, ptr);改成
 vfprintf(stdout, format, ptr_tmp);就没有出现问题

1个回答

liuhuan_2012
mad_liu 不行,这个我看过了
4 年多之前 回复
liuhuan_2012
mad_liu 不行,这个我看过了
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐