在将其标记为重复项之前,请注意我正在为任意维数组寻找更一般的解决方案。我已经在这里或在有关制作二维或三维整数数组的论坛上看过很多帖子,但这些是针对特定尺寸的特定解决方案。我想为任何维度的数组提供一个通用的解决方案。 首先我需要有一种类型的intList中定义如下:如何在C中创建多维动态分配数组?
typedef struct{
int l // length of the list
int * e // pointer to the first element of the array
}intlist;
这实际上填满了用于治疗阵列只是作为指针在C间隙。使用这种类型,我可以将数组传递给函数,而不必担心失去大小。 然后在下一步,我想有一个mdintlist作为多维动态分配数组。类型定义应该是这样的:
typedef struct Mdintlist{
intlist d // dimension of the array
/* second part */
}mdintlist;
第二部分有几个选项。期权是有对低维的mdintlist指针像
struct Mdintlist * c;
其他选项是使用空指针:
void * c;
我不知道应该怎么继续下去。
P.S.一种解决方案可能是分配一块内存,然后使用函数调用这些元素。不过,我想调用数组形式的元素。像tmpmdintlist.c [1] [2] [3] ...
希望我已经解释清楚我想要什么。
TNX。我不知道。下次我会在那里问。 – Foad
在同一个程序中,你不能让'array [2] [3]'和'array [2] [3] [4]'代表*数字*。如果'array [2] [3] [4]'是一个数字,那么'array [2] [3]'是一个数组或指针。你不能使这取决于'array'或其他变量包含什么。 Type是表达式的* static *属性。 –
@SanchkeDellowar我试图找到答案,但是我在编译时遇到了一些错误。我应该在stackoverflow还是softwareengineering.stackexchange问这个问题? – Foad