[英]Too many initializer values while passing boolean array as function input
今天是個好日子。 我正在研究這個生命游戲問題,並試圖傳遞一個布爾數組:(給定)
game({0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, 15, 9);
進入下面的功能:(給定)
void game(bool cells[], int size, int num_gen)
但是,我收到此錯誤:太多初始化值 C/C++ (146)
我嘗試玩轉並能夠通過在主函數中聲明數組來傳遞值:
int main(void)
{
int cells[]={0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0};
}
但這是我的學校作業,所以我不應該編輯任何給定的代碼/輸入/功能。
我現在有點迷失了,將不勝感激任何投入。 提前致謝!
void game(bool cells[], int size, int num_gen)
函數的第一個參數不是數組。 當然,您將參數聲明為未指定長度的數組,但該參數將被調整為指向該數組元素的指針。 函數參數永遠不是 C++ 中的數組。
因此,您正在嘗試使用括號括起來的值列表初始化指針。 有多個值,所以它是錯誤的(並且值的類型也與指針不兼容)。
您可以創建一個數組,並傳遞一個指向該數組元素的指針:
int cells[]={0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0};
game(cells, std::size(cells), 9);
大括號中的值列表在表達式中無效。 你需要的是一個復合文字:
game((bool []){0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, 15, 9);
在花括號段之前看起來像強制轉換的語法為您提供了類型。 您也可以將此語法用於struct
字面量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.