Parameterübergabe an eine struktur

Gast #1939941
Lesenswert?

Hallo, ich habe eine Frage über Strukturen. Ich habe eine Struktur und 
in der Struktur habe ich Arrays mit fester Größe (z.b. int xyz[10];) 
angelegt.
Jetzt meine Frage, ich möchte die Größe der Arrays von einer Variablen 
abhängig machen und möchte daher der Struktur einen Parameter übergeben 
wenn ich Variablen von Typ der Struktur anlege !? Gibt es da eine 
Möglichkeit ?

Danke für Eure Hilfe !

LuckyLuke
Gast #1939948
Lesenswert?

Hallo,

die Möglichkeit gibt es: Du musst in Deiner Struktur statt der Arrays 
Zeiger verwalten.
Denen kannst Du dann mit malloc() allokierte Speicherbereiche zuweisen:
1
struct bla { char *zeiger_auf_array };
2

3
int main(void)
4
{
5
   struct bla example;
6
   char *memory = malloc(123);
7
   if( memory ) {
8
     example.zeiger_auf_array = memory;
9
   }
10
   else {
11
     // malloc fehlgeschlagen
12
   }
13

14
}

Beste Grüße

Alfred
#1940028
Lesenswert?

Arrays variabler Länge gibt es bei C zwar grundsätzlich nicht.  Das 
letzte Element einer struct (mit mehr als einem Element) darf jedoch ein 
Array ohne Größenangabe sein, also
1
struct s {
2
 int i; 
3
 char str[];   // Das geht
4
};
Praktisch ist das bei initialisierten structs, z.B.
1
struct s var1 = { 2, "Hallo" };
2
struct s var2 = { 3, "Noch'n Menüpunkt" };
oder bei dynamisch verwalteten structs, z.B.
1
// im Code
2
int m;
3
m = 22;
4
struct s *p = malloc(sizeof (struct s) + sizeof (char [m]));
wo die Maximalgröße erst beim Allozieren des Speicherplatzes bekannt 
ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren