如何在C语言中创建一个结构体数组?

3
我正在制作一款Roguelike游戏。我希望将地图表示为一个结构体数组,例如在一个数组中有256个结构体。地图是一个16 * 16的网格状图块,每个图块都有属性,例如是否在其上方有物品。
因此,假设我想要一个由256个名为“tiles”的结构体组成的数组:
struct tiles {
        char type; /* e.g. dirt, door, wall, etc... */
        char item; /* item on top of it, if any */
        char enty; /* entity on top of it, e.g. player, orc if any */
}

然后,我需要访问一个这样的结构体数组:
int main(void)
{
        unsigned short int i;
        struct tiles[256];

        for (i = 1; i <= 256; i++) {
                struct tiles[i].type = stuff;
                struct tiles[i].item = morestuff;
                struct tiles[i].enty = evenmorestuff;
        }
}
3个回答

5
你需要为数组命名。如果一个int变量看起来像这样:
int my_int

一个 int 数组看起来像这样:

int my_ints[256]

那么一个 struct tiles 的数组看起来像这样:

struct tiles my_tiles[256]

5
要声明一个struct tiles类型的数组,只需要像其他类型一样在变量前面加上数组标识。例如,要声明一个包含10个int元素的数组:
int arr[10];  

同样地,要声明一个由256个struct tiles组成的数组。
struct tiles arr[256];  

要访问arr的元素中的任何成员,例如type,您需要使用.运算符,如arr[i].type


5

数组是一种变量,就像整数一样,因此您需要给它一个名称才能访问它。

注意:数组的最小索引为0,最高索引为255,因此for循环应该是:for (i = 0; i < 256; ++i)

int main(void)
{
        unsigned short int i;
        struct tiles t_array[256];

        for (i = 0; i < 256; ++i) {
                t_array[i].type = stuff;
                t_array[i].item = morestuff;
                t_array[i].enty = evenmorestuff;
        }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接