Nemůže to být statické pole (protože by byla proměnlivá velikost struktury), musí se použít dynamicky alokovaná pole:
typedef struct{
unsigned char* RAM_READ;
unsigned char* RAM_WRITE;
}MEMORY_MAP;
MEMORY_MAP slave_jednotka_1..... slave_jednotka_n
Při inicializaci struktury se vytvoří pole pomocí malloc:
slave_jednotka_n->RAM_READ = (unsigned char*)malloc(nsizeof(unsigned char));
slave_jednotka_n->RAM_WRITE = (unsigned char)malloc(n*sizeof(unsigned char));
Při rušení struktury se musí pole zrušit pomocí free:
free(slave_jednotka_n->RAM_READ);
free(slave_jednotka_n->RAM_WRITE);
K prvkům pole se pak přistupuje jako k statickému poli:
slave_jednotka_n->RAM_READ*
Taková struktura pak může být součástí jiných struktur, velikost polí je modifikovatelná.
Jiná alternativa - spíš se tato problematika řeší jinak. Aby se nemusela pole alokovat (jednak manažer paměti spotřebovává pro bloky nějakou paměť navíc a jednak je s tím obtížná manipulace), tak se použijí větší pole, pro max. velikost, a ztracená paměť se oželí (jinak se s tím pracuje stejně, jako s menším polem, nevadí že má rezervu):
#define MAP_MAX 10
typedef struct{
unsigned char RAM_READ[MAP_MAX];
unsigned char RAM_WRITE[MAP_MAX];
}MEMORY_MAP;
MEMORY_MAP slave_jednotka_1..... slave_jednotka_n
*