[英]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.