传递布尔数组作为函数输入时初始化值太多
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};
}
但这是我的学校作业,所以我不应该编辑任何给定的 codes/inputs/functions。
我现在有点迷路了,希望能有任何意见。提前致谢!
您可以使用 compound literal 来实现。
类似
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
文字。
void game(bool cells[], int size, int num_gen)
你函数的第一个参数不是数组。当然,您将参数声明为未指定长度的数组,但这样的参数将被调整为指向该数组元素的指针。函数参数在 C++ 中永远不是数组。
因此,您正试图用 brace-enclosed 值列表初始化指针。值不止一个,所以是错误的(而且值的类型也与指针不兼容)。
您可以创建一个数组,并将指针传递给该数组的元素:
int cells[]={0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0};
game(cells, std::size(cells), 9);
大家好。我正在研究这个生命游戏问题并尝试传递一个布尔数组:(给定)
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};
}
但这是我的学校作业,所以我不应该编辑任何给定的 codes/inputs/functions。
我现在有点迷路了,希望能有任何意见。提前致谢!
您可以使用 compound literal 来实现。
类似
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
文字。
void game(bool cells[], int size, int num_gen)
你函数的第一个参数不是数组。当然,您将参数声明为未指定长度的数组,但这样的参数将被调整为指向该数组元素的指针。函数参数在 C++ 中永远不是数组。
因此,您正试图用 brace-enclosed 值列表初始化指针。值不止一个,所以是错误的(而且值的类型也与指针不兼容)。
您可以创建一个数组,并将指针传递给该数组的元素:
int cells[]={0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0};
game(cells, std::size(cells), 9);