问题描述
- 关于va_copy的问题,函数变参
-
#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,%pn",format, ptr);vfprintf(stdout, format, ptr); vfprintf(stdout, format, ptr); printf("print ptr: %p,%pn",format, ptr); va_end(ptr);
}
int main()
{
int i=3,j=4;
char a[20]="hello world";
print("%d,%d,%sn",i,j,a);
return 0;
}为什么会产生段错误, 而把第二个 vfprintf(stdout, format, ptr);改成 vfprintf(stdout, format, ptr_tmp);就没有出现问题
时间: 2024-10-31 02:31:23