c - 数组具有不完整的元素类型“布尔”
问题描述
所以是的,这是错误,我不知道如何解决这个问题:test.c:5:12: 错误:数组的元素类型不完整 'bool []'
这是一个更大的代码的一部分,但所有相关的都包括在内。
#include <stdio.h>
#include <cs50.h>
int candidate_count = 3;
bool locked[][] = {locked[0][1] = false, locked[0][2] = false, locked[1][0] = false, locked[1][2] = false, locked[2][0] = false, locked[2][1] = false};
int main(void)
{
int lockedCount = 0;
for(int i = 0; i < candidate_count; i++)
for(int j = 0; j < candidate_count; j++) {
if(locked[i][j] == false) {
locked[i][j] = true;
printf("locked %i vs %i\n", i, j);
}
if(i == candidate_count - 2) {
for(int k = 0; k < candidate_count; k++)
if(locked[k][j] == true) {
lockedCount += 1;
printf("locked %i vs %i\n", i, k);
}
if(lockedCount == 0) {
printf("didn't %i vs %i\n", i, j);
break;
}
else {
locked[i][j] = true;
printf("locked %i vs %i\n", i, j);
}
}
}
}
解决方案
这些声明和初始化一个数组
bool locked[][] = {locked[0][1] = false, locked[0][2] = false, locked[1][0] = false, locked[1][2] = false, locked[2][0] = false, locked[2][1] = false};
至少是不正确的,因为数组类型的元素bool[]
是不完整的类型。
你需要写例如
bool locked[][3] =
{
{ [1] = false, [2] = false },
{ [0] = false, [2] = false },
{ [0] = false, [1] = false }
};
或者像
bool locked[][3] =
{
[0] = { [1] = false, [2] = false },
[1] = { [0] = false, [2] = false },
[2] = { [0] = false, [1] = false }
};
实际上这些声明和初始化等价于
bool locked[3][3] =
{
false
};
因为声明中数组的所有元素都由零初始化,即宏的值false
..
或者由于数组具有静态存储持续时间,因此默认情况下它由零初始化。所以你甚至可以写
bool locked[3][3];
而且您忘记了包含标题<stdbool.h>
。最好明确包含所需的标头。
这是一个演示程序。
#include <stdio.h>
#include <stdbool.h>
bool locked[][3] =
{
{ [1] = false, [2] = false },
{ [0] = false, [2] = false },
{ [0] = false, [1] = false }
};
int main(void)
{
// your code goes here
return 0;
}
推荐阅读
- python - 如何找到数据框中几乎重复的行数,即相差少于两个条目?
- java - GSON toJson() 方法为 POJO 返回 null
- python-3.x - 读取 .dat 文件时 Pandas 列名不对齐
- powershell - 如何检查我的搜索进程命令打印了多少行?
- java - 处理Android中的连续按钮点击
- java - 如何在 eclipseIDE 中执行 shell 脚本?
- c# - 在 C# WPF 中保存数据库配置详细信息
- angular - 更新数组后,视图不更新
- ios - 在Swift 4中从最新到最旧对日期数组进行排序
- spring - jpa 未从 websphere 开始 - NoClassDefFoundError:CandidateComponentsIndexLoader?