【发布时间】:2020-06-21 08:22:08
【问题描述】:
我需要在函数中使用完整的二维数组。 我不能使用 for、while 或 do-while。 我正在使用适用于 Windows 的 CodeBlocks(C 语言) 这是一个代码示例(这不是真正的代码,只是一个示例):
#include <stdio.h>
void reload(char* reload[2][6])
{
printf(" _________________\n");
printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
printf(" -----------------\n");
}
int main()
{
char* array[2][6];
printf(" _________________\n");
printf("|%c|%c|%c|%c|%c|%c|\n", array[0][0], array[0][1], array[0][2], array[0][3], array[0][4], array[0][5]);
printf("|%c|%c|%c|%c|%c|%c|\n", array[1][0], array[1][1], array[1][2], array[1][3], array[1][4], array[1][5]);
printf(" -----------------\n");
reload(array);
return 0;
}
【问题讨论】:
-
所以你有一个 char* 的二维数组,所以从技术上讲是一个 char***。对于这种情况,固定大小的数组有效(只需检查 Jayram 答案),否则请考虑 malloc 并且不要忘记检查您的参数。
-
@Platypus:
char *的二维数组不是char ***。数组不是指针。 -
@EricPostpischil 那么告诉我你将如何 malloc 一个二维的 char* 数组?
-
@Platypus:
char *(*x)[Rows][Columns] = malloc(sizeof *x);或char *(*x)[Columns] = malloc(Rows * sizeof *x);。 -
@Platypus: 没有。一个
char ***可以用三个下标得到一个char或两个下标得到一个char *,但它是一个指向指针的指针;它不是数组数组或数组数组的数组。许多人将它们混为一谈,因为数组在许多表达式中会自动转换为指针,但它们是不同的,因为数组在某些表达式中未转换为指针。在sizeof和获取地址和声明中出现差异。
标签: c windows function multidimensional-array codeblocks