数组分配中的初始化程序值太多

时间:2018-10-27 15:32:15

标签: c++

我正在使用递归方式制作Sierpinski地毯。 在亚麻的DrawCarpet函数中,我在其中重新定义一个值,但出现错误“到许多初始化器值”。有人知道我在做什么错吗?

typedef float point[2];

float x = 100;
float y = 100;
point a = {  x , y  };
int grade = 4;

void DrawCarpet(point a, GLfloat width, GLfloat grade)
{


    if(grade>0)
    {


        width = width / 3;

        DrawCarpet(a, width, grade - 1);
        a = {  x - width , y };
        DrawCarpet(a, width, grade - 1);
        a = {  x - 2*width , y  };
        DrawCarpet(a, width, grade - 1);
        a = {  x , y-width  };
        DrawCarpet(a, width, grade - 1);
        a =  { x  , y-2*width  };
        DrawCarpet(a, width, grade - 1);
        a = {  x - width , y-width  };
        DrawCarpet(a, width, grade - 1);
        a = {  x - width , y -2*width };
        DrawCarpet(a, width, grade - 1);
        a = {  x -2* width , y -2*width };
        DrawCarpet(a, width, grade - 1);
        a = { x,y };

    } 
}

1 个答案:

答案 0 :(得分:1)

参数a的类型不是 2 float 的数组,而是float*(由于array to pointer decay的原因,也因为您的函数参数遮盖全局变量)。因此,您要尝试的是为指针变量分配两个值。尝试使用具有两个成员作为点类型的结构,如果要分配给它,则通过引用将其传递。