簡體   English   中英

數組賦值中的初始值設定項過多

[英]Too many initializer values in array assignment

我正在使用遞歸做謝爾賓斯基地毯。 在亞麻布中的 DrawCarpet 函數中,我重新定義了一個值,但出現錯誤“To many initializer values”。 有人知道我做錯了什么嗎?

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 };

    } 
}

參數a的類型不是2 個float數組,而是float* (因為數組到指針衰減,也因為您的函數參數隱藏了全局變量)。 所以你要做的是為一個指針變量分配兩個值。 嘗試使用具有兩個成員的結構作為點類型,如果要分配給它,則通過引用傳遞它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM