matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++typedef struct
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "C/C++" - typedef struct
typedef struct < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

typedef struct: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:07 Di 15.04.2008
Autor: Auron2009

Habe eine Frage zu structs und typedef. Ich kannte bisher nur folgende Form:

typedef struct
{
   int tag;
   char monat[10];
   int jahr;
} Datum;

Nun könnte ich mit
Datum geburtstag;
ein Struct mit Namen "geburtstag" vom Typ "Datum" erzeugen.


Nun habe ich jedoch folgendes gesehen:

typedef struct l_knoten
{
   int l_daten;
   struct l_knoten *l_next;
} L_knoten;

Also einmal ein Name vor den geschweiften Klammern und einmal dahinter (l_knoten bzw. L_knoten). Wo ist der Unterschied bzw. welche Funktionen haben die beiden Namen?


Vielen Dank für eure Hilfe!

        
Bezug
typedef struct: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:37 So 20.04.2008
Autor: Auron2009

weiß vielleicht doch noch jemand eine Antwort? Danke!

Bezug
        
Bezug
typedef struct: Antwort
Status: (Antwort) fertig Status 
Datum: 16:15 So 20.04.2008
Autor: andihit

Hi,

Mit

typedef struct l_knoten
{
   int l_daten;
   struct l_knoten *l_next;
} L_knoten;

Deklarierst du in deiner Struktur einen Zeiger auf die eigene Struktur (in der Definition "l_knoten").


Wenn du
typedef struct
{
   int l_daten;
   struct L_knoten *l_next;
} L_knoten;

schreiben würdest, gibt's später bei der Zuweisung folgende Warnung: "assignment from incompatible pointer type".

Weil der Compiler das L_knoten noch nicht kannte bei der Deklarierung (merkwürdigerweise kann man bei der Definition auch "struct irgendwas *l_next;" schreiben, und die Warnung kommt erst bei der Zuweisung ... der C Compiler ist eben nicht gesprächig ;))

Bezug
                
Bezug
typedef struct: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:38 So 20.04.2008
Autor: Auron2009

Also ist das l_knoten nur ein Name, damit der Compiler weiß auf was der Zeiger im Struct zeigen soll. Also sind sowohl l_knoten als auch L_knoten Namen für den struct.
Könnte man jetzt später im Programm auch mittels "struct l_knoten irgendwas" ein Struct erzeugen oder geht das weiterhin nur mit "struct L_knoten irgendwas"?

Bezug
                        
Bezug
typedef struct: Antwort
Status: (Antwort) fertig Status 
Datum: 21:30 Mo 21.04.2008
Autor: rainerS

Hallo!

> Also ist das l_knoten nur ein Name, damit der Compiler weiß
> auf was der Zeiger im Struct zeigen soll. Also sind sowohl
> l_knoten als auch L_knoten Namen für den struct.

Nein, nicht ganz. l_knoten ist ein Name (Tag), der nur in Verbindung mit dem speziellen Wort struct auftreten kann. L_knoten ist ein Typ, der durch typeder deklariert wurde. Das Tag dient nur dazu, verschiedene Deklarationen miteinander in Verbindung zu bringen. Zum Beispiel funktioniert auch folgendes:

typedef struct l_knoten L_knoten

(Hier wird der Typ L_knoten als ein struct mit Namen l_knoten deklariert. Das ist eine unvollständige Deklaration.)

1: struct l_knoten
2: {
3:    int l_daten;
4:    struct l_knoten *l_next;
5: };


(Hier wird die Deklaration vervollständigt. Von nun an kann man Variablen definieren.)

>  Könnte man jetzt später im Programm auch mittels "struct
> l_knoten irgendwas" ein Struct erzeugen oder geht das
> weiterhin nur mit "struct L_knoten irgendwas"?

struct L_knoten ist falsch, denn L_knoten ist ja schon ein Typ. Die korrekte Definition einer Variablen wäre

L_knoten var1;

oder

struct l_knoten var1;

Viele Grüße
   Rainer


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]