我有这样的结构:
typedef struct s_struct
{
float x1;
float y1;
float x2;
float y2;
} t_struct;
这用于在我的屏幕上绘制一些笔画,但我有一点问题,我想在按下右箭头时更改我的X值,但它是段错误,我认为是因为我没有' t正确发送我的结构地址...... 这就是我的方式:
void draw_all(t_struct *param)
{
draw_horizon(param);
draw_verti(param);
}
void draw_horizon(t_struct *param)
{
param->x1 = param->x1 + param->C_Y;
param->y1 = param->y1 + param->C_X;
param->x2 = param->x2 + param->C_Y;
param->y2 = param->y2 + param->C_X;
param->y2 = param->y2 + param->C_X;
stroke(param);
}
当我按下右箭头时调用的函数:
int event(int keycode, t_struct *param)
{
if (keycode == 53)
{
printf("exit succes.\n");
exit(1);
}
if (keycode == 124)
{
printf("====\n");
printf("PRE C_X = %f\n", param->C_X);
param->C_X = param->C_X + 1;
printf("POST C_X = %f\n", param->C_X);
draw_all(¶m);
}
return (0);
}
我的函数draw_verti是相同的但是对于垂直笔画... 段错误是因为我有我的结构的副本,我没有成功发送地址... 谢谢!
答案 0 :(得分:4)
在event
函数中,变量param
是一个指针。当您执行¶m
时,您会获得指向的指针,该指针的类型为t_struct **
。这不是预期的draw_all
函数。
你的编译器应该抱怨它, 如果 你有适当的原型。