我希望能在C语言中创建一个二维数组。
例如,我可以像这样创建一个名为place的int类型变量:
我有一个游戏,其中有像行和列这样的变量。 我希望我的位置变量是一个二维数组,其行和列可以进行动态分配(对于数组的最大大小),在“正常”声明中将如下所示:
但是我不知道如何使用动态分配来实现它。
对于一维数组,我会像这样做:
例如,我可以像这样创建一个名为place的int类型变量:
int *place;
我有一个游戏,其中有像行和列这样的变量。 我希望我的位置变量是一个二维数组,其行和列可以进行动态分配(对于数组的最大大小),在“正常”声明中将如下所示:
place[rows][columns];
但是我不知道如何使用动态分配来实现它。
对于一维数组,我会像这样做:
place = (int*) malloc (levels * sizeof(int));
但我不知道如何使用二维数组实现这一点。
编辑:
如何将其改写为char而不是int?
我试过用char来覆盖int,但它不起作用。
char
的代码,并说明它为什么不起作用吗?所有答案都独立于基本类型,你只需要在适当的位置替换类型名称即可。 - Daniel Fischerchar (*place)[columns];
,用于声明place
为指向columns
个字符数组的指针,即char (*)[columns]
。您可以像通常一样在声明时立即初始化,例如:char (*place)[columns] = malloc(rows * sizeof *place);
。 - Daniel Fischer