Forum: Mikrocontroller und Digitale Elektronik C: typedef struct mit Array


von Dirk F. (dirkf)


Lesenswert?

Hallo, ich habe in C folgendes erstellt, was auch kompiliert werden 
kann:
1
typedef struct {
2
  char name[50];      // Name der Person
3
  int alter;          // Alter der Person          
4
}person;
5
6
// Objekte erstellen
7
person 
8
Person1={"Kurt",44},
9
Person2={"Felix",55};
10
11
// Zugriff
12
Person1.alter = 66;

Ich möchte aber über ein Array auf die Element zugreifen:
1
Person[1].alter = 77;

Geht das irgendwie ?

von Ada J. Quiroz (inschnier)


Lesenswert?

Dirk F. schrieb:
> person
> Person1={"Kurt",44},
> Person2={"Felix",55};
> // Zugriff
> Person1.alter = 66;

Ja.
1
person array[2] = {{"Kurt",44},{"Felix",55}};
2
person* person1 = &array[0];
3
// Zugriff
4
5
array[0].alter = 66;
6
Person1.alter = 66;

von Harald K. (kirnbichler)


Lesenswert?

Natürlich:
1
person meinArray[10];
2
3
// Mit Initialisierer (und aus Initialisierer bestimmter Arraygröße):
4
5
person meinArray[] = { {"Kurt", 44}, {"Felix", 55} };
6
7
// Zugriff auf Elemente
8
9
printf("%s ist %d Jahre alt\n", meinArray[0].name, meinArray[0].alter);

von Ada J. Quiroz (inschnier)


Lesenswert?

Nachtrag:

Natürlich können die zwei irgendwo im Speicher liegenden Personen nicht 
direkt als Array verwendet werden, das geht nur umständlich. 
Letztendlich ist das alles Spaghetticode.
1
person person1={"Kurt",44};
2
person person2={"Felix",55};
3
person* array[2] = {&person1, &person2};
4
5
person1.alter = 66;
6
*array[0].alter = 66;

von Dirk F. (dirkf)


Lesenswert?

Danke für eure schnelle Hilfe !!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.