Zum Inhalt springen

Typen in C/C++


DrScherzkeks

Empfohlene Beiträge

Du wolltest nur C wissen, dann brauchst Du nur den Typedef wegstreichen und die Template-Geschichte überspringen. Den Struct gibt es in C genauso. Aber weil ich gar nicht erst mit C rumgemacht habe überspringe ich diesen Teil. Ob es den Enum in C gibt weiß ich leider nicht so genau, ich denke aber ja.

In C++ wird das über Struct, Enum und Union gemacht - in Verbindung (zwecks Bequemlichkeit) mit einem Typedef.

z.B.

// Die Nasenart wird durchnummeriert von 1 an hochwärts, man kann hier als Synonym die Worte verwenden

enum Nasenart{Hakennase=1, Gurkennase, Plattnase, Stupsnase};

Mit dem typedef kann man die ganze Struktur (welche ein neuer Datentyp ist) über die Bezeichnung einenase ansprechen, welches selber nur Typ ist, noch kein Objekt!

In der Union wird dieselbe Speicherstelle unter verschiedenen Datentypen verwendet. Man kann z.B. einen long in den Nasendurchschnitt reinschreiben und diese Zahl direkt an der Speicherstelle als int wieder auslesen (welcher ja kleiner ist). Das ist kein Typ-casting oder ähnliches - hier wird einfach mit brutaler Gewalt die Position des long-Wertes als int ausgelesen.

Ich weiß, daß ich ein wenig zu oft Nase geschrieben habe, aber mir gefällt das irgendwie (hehe) Standard wäre es natürlich alle Elemente ohne Nase beginnen zu lassen, weil man ja durch den Typ weiß, daß es sich um eine Nase handelt.

typedef struct Nase

{

bool vorhanden;

int Nasenart;

long Nasenlaenge;

short Nasenhoehe;

char Nasenbezeichnung[20];

union

{

int idurchschnitt;

long ldurchschnitt;

double ddurchschnitt;

}Nasendurchschnitt;

}einenase;

Im Programm werden die Elemente über den Punktoperator angesprochen. Die Nasenart wird mit dem Synonym Gurkennase für den Wert 2 initialisiert.

void Nase::IrgendeineNasenroutine(void)

{

einenase hn; // hier wird jetzt tatsächlich eine Nase erzeugt - in C müßte man halt: struct Nase hn; schreiben

hn.Nasenart=Gurkennase;

hn.Nasendurchschnitt.idurchschnitt=5;

long l=hn.Nasendurchschnitt.ldurchschnitt; // gnadenlos den int als long auslesen!

}

Man kann die einenase jetzt überall als ein Ding verwenden und sich Nasenarrays erzeugen lassen oder die Nasen als Botschaften verschicken =8-D wie Du willst!

Dann gibt es noch die Geschichte mit den "abstrakten Datentypen" oder auch Templates genannt. Man kann Templates verwenden und später Programme mit externen Datentypen zu spezifizieren. Dabei wird das Programm auf den Datentyp, den man ihm als Template-Parameter übergibt, "umgeschrieben" und der erzeugte Programmcode ist in der Lage mit diesem Datentypen umzugehen. Diese Klassen arbeiten halt einfach mit Platzhaltern für die später nachgereichten Datentypen.

<FONT COLOR="#a62a2a" SIZE="1">[ 17. Dezember 2001 17:31: Beitrag 6 mal editiert, zuletzt von Crush ]</font>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...