Verständnisproblem
-
Hallo zusammen,
ich habe hier ein Verständnisproblem. In Wikibooks habe ich auch nicht wirklich etwas darüber gefunden bzw. schon eingies darüber aber es bringt mri das Verständnis nicht näher.
#include <stdio.h> struct student { char vorname[30]; char name[30]; int punkte; }; void ausgabe(struct student *zeiger) { zeiger->vorname[2]='i'; printf("\n %s %s ",zeiger->vorname,zeiger->name); printf(" hat %d Punkte",zeiger->punkte); } main() { struct student daten = {"Egon","Mustermann",55}; daten.punkte=72; daten.vorname[1]='r'; ausgabe(&daten); }
Hier wird doch an die Funktion "ausgabe" eine "Call by Refence" übergeben, das ist mri wohl klar, allerdings:
zeiger->vorname[2]='i';
wieso ist da ei Pfeil drin und nicht ein Punkt? Wofür ist dan nder Punkt-Operator gut? Darf ich den Pfeil-Operator nur in Funktionen nutzen? Diesen müsste ich doch auch im main nutzen können wenn ich per Zeiger auf eine Struktur zugriefen will oderß
Gruß juniorcrew
-
juniorcrew schrieb:
allerdings:
zeiger->vorname[2]='i';
wieso ist da ei Pfeil drin und nicht ein Punkt?weil 'zeiger' ein zeiger ist. du machst 'nen indirekten zugriff auf die struct, daher ->
eine andere schreibweise wäre: *(zeiger).vorname[2] = ...; da wird zuerst der pointer dereferenziert und dann kannste natürlich den punkt verwenden, um die struct-members anzusprechen.