struct Variablen an Funktion übergeben

Vielen Dank für die tolle Hilfe.

Das Zugriffsbeispiel dort ist das eine laternative Schreibweise oder muss ich es stattdessen so schreiben?
Wenn es alternativ ist... wozu? Gibt es Unterschiede?
 
Nein, der -> Operator ist keine alternative Schreibweise für den . Operator. Der -> Operator ist nur für Zeiger auf Strukturen gedacht, der andere Operator für Strukturen.

Normalerweise kann man ja auf den Wert eines Zeigers zugreifen indem man ein Sternchen vor die Variable schreibt, so:
Code:
int i = 3; int* pi = &i;

*pi = 5;  /* i ist jetzt 5. */

Das Problem mit Zeigern auf Strukturen ist nun, das man nicht einfach
Code:
*pstr.member
schreiben kann weil der . Operator stärker bindet als der * Operator. Man muß Klammern benutzen um das auszudrücken was man eigentlich wollte:
Code:
(*pstr).member
Da das etwas umständlich ist und auch nicht schön aussieht, wurde der -> Operator eingeführt.

Code:
struct str_adress adr; 
struct str_adress* padr; /* Pointer auf ein struct str_adress. Vorsicht, noch nicht initialisiert! */

padr = &adr; /* jetzt zeigt padr auf die Adresse von adr */

/* 1 */ padr->name
/* 2 */ padr[0].name
/* 3 */ (*padr).name
Die letzen 3 Ausdrücke sind alle äquivalent und man kann nehmen was man möchte. Allerdings würde ich Variante 1 bevorzugen.
 
Zurück