0

我计划创建一个从指针派生的二维数组typedef struct

假设typedef struct名为“Items”并包含字符串和整数的混合变量。

我将声明两个int变量,即typenumtypetotal。这两个整数将从零开始,当输入数据与某个函数匹配时相加。

在数组中,Items *type[][], 基本上type[][]是,Items *type[typenum][typetotal]但我不能这样做,因为我将在声明部分声明typenumandtypetotal为零。

我尝试通过初始化数组,Items *type[][] = {{0},{0}}但这会产生错误。

有什么建议吗?有些人告诉我使用 malloc() ,但我根本不知道如何。

*在 Windows 上使用 Tiny C

4

2 回答 2

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);

这是一个教程: http: //www.eskimo.com/~scs/cclass/int/sx9b.html

于 2013-10-01T09:18:55.860 回答
0

If typenum and typetotal increase as your program runs be sure to use realloc, which will reallocate more memory and keep the contents. You'll need to allocate the first dimension of the array like this:

myArray = realloc(myArray, sizeof(Items*) * typenum);

and then allocate the second dimension for each of the first:

for(...)
    myArray[i] = realloc(myArray[i], sizeof(Items) * typetotal);
于 2013-10-01T09:24:11.993 回答