你好我想创建一个数组表,它将是2xX,X是一个自定义数字,比方说20,所以我们将获得一个2x20数组表,所有这些都在c中。 我试过这样做
int j=20;
int table[2][j];
但看起来我不能让它发挥作用!!
答案 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数组的指针。