I've been learning about C recently, and I've encountered something which I can't seem to find a good answer to.

In my code I might have:

```
struct randomStruct a;
struct secondStruct array[5];
struct structyStruct q = { 17, "Hey yo", {123,123}};

```

But in memory, they might be stored as:

```
q, a, array

```

What I mean here is that q's adress in memory is lower than a's, which is lower than array's.

**What determines the order in which variables are saved in memory?**

(If you need more information/actual runnable code, please let me know)

Thanks in advance!