我打算创建一个从typedef struct
假设typedef struct
被命名为“Items”并包含字符串和整数的混合变量。
我将声明两个int
变量,即typenum
和typetotal
。这两个整数将从零开始,并在输入数据与某个函数匹配时相加。
在数组Items *type[][]
中,基本上type[][]
是Items *type[typenum][typetotal]
但我不能这样做,因为我会在声明中将typenum
和typetotal
声明为零一部分。
我尝试通过Items *type[][] = {{0},{0}}
初始化数组,但这会产生错误。
有什么建议吗?有人告诉我在这上面使用malloc(),但我根本就不知道如何。
*在Windows上使用Tiny C
答案 0 :(得分:2)
使用动态内存分配。
Items **type;
type = malloc(sizeof (Items *) * typenum);
for (int i = 0; i < typenum; i++)
type[i] = malloc(sizeof Items) * typetotal);
使用数组后,您需要手动释放已分配的内存。
for (int i = 0; i < typenum; i++)
free(types[i]);
free(types);
答案 1 :(得分:0)
如果程序运行时typenum
和typetotal
增加,请确保使用realloc
,这将重新分配更多内存并保留内容。您需要像这样分配数组的第一个维度:
myArray = realloc(myArray, sizeof(Items*) * typenum);
然后为第一个分配第二个维度:
for(...)
myArray[i] = realloc(myArray[i], sizeof(Items) * typetotal);