不能在C中制作自定义数组大小表?

时间:2014-01-25 20:56:14

标签: c arrays

你好我想创建一个数组表,它将是2xX,X是一个自定义数字,比方说20,所以我们将获得一个2x20数组表,所有这些都在c中。 我试过这样做

int j=20;

int table[2][j];

但看起来我不能让它发挥作用!!

1 个答案:

答案 0 :(得分:4)

在C99 +中你有Variable Length Arrays。但是,看起来你没有使用C99 +编译器(Visual Studio?),这可能是一个坏主意,因为X的大值可能会破坏你的堆栈。如果你能保证合理的大小,并且你可以使用不同的编译器,这是一个不错的选择。

但是,如果您不能使用VLA,则需要使用动态分配:

int *table = malloc(rows * columns * sizeof *table);

刚刚分配了一大块内存,足以满足整个桌面的需要。要获取特定元素,请使用...

int item = table[y * columns + x];

如果您想使用table[x][y]语法,则需要以不同方式进行分配。

int (*table)[columns] = malloc(rows * sizeof *table);
/* ... */
table[i][j] = value;
/* ... */
int item = table[i][j];

此处,table是指向columns int s数组的指针。