Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化联合类型(ints或chars)的二维数组_C_Arrays_Matrix_2d_Unions - Fatal编程技术网

初始化联合类型(ints或chars)的二维数组

初始化联合类型(ints或chars)的二维数组,c,arrays,matrix,2d,unions,C,Arrays,Matrix,2d,Unions,因此,我试图创建一个大小为行x列的二维数组。我为它分配了空间(或者至少我认为),现在我正在尝试初始化它,或者至少测试它,看看它是否可以保存值。然而,每当我输入一个int或char时,我就会得到一个不兼容的类型错误,而union应该同时包含这两个字符 我认为我的并集有点问题,我试图在结构中声明一个矩阵,因为我的错误是它无法识别我的类型Mine来保存int或chars……或者我只是错误地将值放入2D数组中 我现在只是想测试一下,确保2D阵列的制作非常正确 错误 代码 typedef联合 { 国际阿杰

因此,我试图创建一个大小为行x列的二维数组。我为它分配了空间(或者至少我认为),现在我正在尝试初始化它,或者至少测试它,看看它是否可以保存值。然而,每当我输入一个int或char时,我就会得到一个不兼容的类型错误,而union应该同时包含这两个字符

我认为我的并集有点问题,我试图在结构中声明一个矩阵,因为我的错误是它无法识别我的类型Mine来保存int或chars……或者我只是错误地将值放入2D数组中

我现在只是想测试一下,确保2D阵列的制作非常正确

错误

代码

typedef联合
{
国际阿杰森特矿业公司;
我在这里;
}矿山;
typedef结构板
{
int rows,columns;//创建数组的行和列
Mine**boardSpaces;//用于保存所述数组的空指针
}董事会;
Board*createBoard(int行,int列)
{
Board*b=malloc(sizeof(Board));
b->行=行;
b->columns=列;
b->boardSpaces=malloc(行*大小(我的*);//分配第一个数据
int i;
对于(i=0;iboardSpaces[i]=malloc(columns*sizeof(Mine));//分配第二个dimension
返回b;
}
int main()
{
int行=3;
int列=4;
Board*myBoard=createBoard(行、列);
myBoard->boardSpaces[0][0]=5;
printf(“完成”\n);
}

myBoard->boardSpaces[0][0]
属于
Mine
类型,而不是
int
char

如果要分配int,请执行以下操作:

myBoard->boardSpaces[0][0].ajacentMines = 5;
对于字符:

myBoard->boardSpaces[0][0].mineHere= '5';

联合是对内存中同一位置的多个解释,但要使用的解释必须由代码提供。

现在,当你说联合应该同时包含这两个位置时,这是这里的第一个问题。工会也有,但不是两者都有。所以你不能在这里同时储存相邻的地雷和地雷。当您将一个值添加到相邻的mines时,mineHere也将被修改。除非没有相邻的地雷,否则你应该使用
struct
。哦,该死的……我知道,我怎么没看到呢。谢谢你,哈哈,学期结束了,我的心都快晕过去了。
myBoard->boardSpaces[0][0].ajacentMines = 5;
myBoard->boardSpaces[0][0].mineHere= '5';