Hallo, kann mir bitte jemand erklären was in einem C-Code eine Datenstrukur ist. Was das bringt? wie es funktioniert? usw. Hier habe ich ein Bsp aus meinen Unterlagen: b.c struct DateTime { unsigned int Year; unsigned char Month; unsigned char Day; }; void InitDate( struct DateTime* Date, unsigned char Day, unsigned char Month, unsigned int Year ) { Date->Year = Year; Date->Month = Month; Date->Day = Day; } und noch ein Bsp.: a.c struct DateTime { unsigned int Year; unsigned char Month; unsigned char Day; }; void InitDate( struct DateTime* Date, unsigned char Day, unsigned char Month, unsigned int int main() { struct DateTime myDate; InitDate( &myDate, 22, 3, 63 ); }
:
Verschoben durch Admin
> kann mir bitte jemand erklären was in einem C-Code eine Datenstrukur > ist. > Was das bringt? > wie es funktioniert? > usw. Jedes C-Buch kann das.
http://www.imb-jena.de/~gmueller/kurse/c_c++/c_struct.html http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/struct.html http://cprogramminglanguage.net/c-structure.aspx
Michael Schuler schrieb: > Hallo, > > kann mir bitte jemand erklären was in einem C-Code eine Datenstrukur > ist. Eine Zusammenfassung von Daten unter einem gemeinsamen Namen > Was das bringt? Das man im Programm Dinge die zusammen gehören auch beisammen lässt > wie es funktioniert? indem man ein C Buch liest > Hier habe ich ein Bsp aus meinen Unterlagen: schlechtes Beispiel. Da sieht man nicht, was eine struct tatsächlich bringt > struct DateTime { > unsigned int Year; > unsigned char Month; > unsigned char Day; > }; Schön. Das sagt also eigentlich nur: Ein komplettes Datum besteht aus Tag, Monat Jahr (Warum diese Struktur DateTime heisst ist mir allerdings nicht klar. Von Zeit kann in dieser Struktur ja keine Rede sein) Jetzt magst du zb definieren, wie eine Person beschrieben wird struct Person { char Vorname[30]; char Nachname[30]; struct DateTime Geburtstag; }; Das sagt: Eine Person wird beschrieben durch Vorname, Nachname und einen Geburtstag. Wie dieser Geburtstag aufgebaut ist, ist hier egal. Das weiß die struct DateTime. Aber ein Person hat so einen Geburtstag > void InitDate( struct DateTime* Date, > unsigned char Day, unsigned char Month, unsigned int Year ) > { > Date->Year = Year; > Date->Month = Month; > Date->Day = Day; > } Diese Funktion ist nicht sehr repräsentativ. Aber nimm zb das hier void PrintDate( struct DateTime* Date ) { printf( "%d-%d-%d", (int)Date->Day, (int)Date->Month, (int)Date->Year ); } Das ist eine Funktion, die das Ausgeben eines Datums realisiert. Sei benötigt dazu eine struct DateTime. Was sich in einem Datum verbirgt, ist dem Aufrufer dieser Funktion egal, das weiß diese Funktion. Der Aufrufer muss sich nicht um die Details kümmern. zb hast du int main() { struct Person Programmierer; strcpy( Programmierer.Vorname, "Michael" ); strcpy( Programmierer.Nachname, "Superstar" ); InitDate( &Programmierer.Geburtstag, 28, 9, 1994 ); // ab hier ist die Person und auch ihr Geburtstag korrekt initialisiert PrintDate( &Programmierer.Geburtstag ); } in der Verwendung arbeite ich nach der Initialisierung des Geburtstages nur noch mit dem Datum als Ganzes. Ich muss mich nicht darum kümmern, dass so ein Datum aus Tag, Monat, Jahr besteht. Das sind alles Details, die in der Struktur verborgen sind. Und wenn das Jahr in der struct anders gespeichert werden soll, dann muss ich in main gar nichts ändern. main arbeitet immer noch mit einem Datum als Ganzes. Die Details der Speicherung sind in InitDate bzw. PrintDate verborgen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.