【发布时间】:2021-06-22 19:14:07
【问题描述】:
我有我在可变参数中使用的代码,一个是 long 类型,另一个是 char 数组类型,它被传递给具有可变参数数量的函数 (...),当我尝试检索char [] 它引发了分段错误。
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
int varargs(int num,...);
int main()
{
printf("enter fflush\n");
long opr=77777;
long *ptr=&opr;
char env[10]="QATNLO19\0";
varargs(2,* ptr,env);
return 0;
}
int varargs(int num,...)
{
va_list ap;
va_start(ap,num);
printf("getting char arg\n");
fflush (stdout);
char *ptr=va_arg(ap,char *); // segmentation fault at this line
printf("char is %s",ptr);
return 0;
}
你能解释一下为什么这是一个分段错误吗?
【问题讨论】:
-
请不要在代码中添加
**来高亮一行,这会与C语法混淆。
标签: c segmentation-fault core