How to make an array of struct in C?
Solution 1
To declare an array of struct tiles
just place this before the variable as you do with other types. For an array of 10 int
int arr[10];
Similarly, to declare an array of 256 struct tiles
struct tiles arr[256];
To access any member, say type
, of elements of arr
you need .
operator as arr[i].type
Solution 2
You need to give your array a name. If an int
variable looks like:
int my_int
And an array of int
s looks like:
int my_ints[256]
Then an array of struct tiles
looks like:
struct tiles my_tiles[256]
Solution 3
An array is a variable, just like an integer, so you need to give it a name to access it.
Note: the array has a lowest index of 0
and a highest index of 255
, so the for loop should be: for (i = 0; i < 256; ++i)
instead.
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;
}
}
sadljkfhalskdjfh
Updated on August 25, 2020Comments
-
sadljkfhalskdjfh over 3 years
I am making a roguelike game. I want to represent the map as an array of structs, for example having 256 structs in an array. The map is a 16*16 grid of tiles, and each tile has attributes, such as whether there is an item on top of it.
So say that I want an array of 256 of the struct
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 */ }
Then, I need to access an array of that structs something like this:
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; } }