簡體   English   中英

將布爾數組作為函數輸入傳遞時,初始值設定項過多

[英]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);

大括號中的值列表在表達式中無效。 你需要的是一個復合文字

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.

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