AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeiger auf Struct in C

Ein Thema von faux · begonnen am 24. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

Zeiger auf Struct in C

  Alt 24. Mai 2006, 18:57
Hallo!

Ich bin gerade dabei, mir wieder etwas C anzusehen. Mein Bsp: Eine FIFO.
Wie kann ich auf ein Unterelement eines Zeigers auf einen Struct zugreifen?
In Delphi geht da so:
Delphi-Quellcode:
type
  PNode = ^TNode;
  TNode = record
    Value: Integer;
    Next: PNode;
  end;
var
  a: PNode;
begin
  New(a);
  a^.Value = 10;
end;
Und wie geht das in C?
Mein Versuch:
Code:
struct node
{
  int value;
  struct node *next;
};

struct node *a;
a = (struct node *) malloc(sizeof(struct node));
*a.value = 10; //Geht nicht...
Wie gehts richtig?

Danke schon mal.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:08
Gehts denn damit?
Code:
a.*value = 10;
Hab mir vor Urzeiten mal einen Riesenwälzer C/C++ angetan, aber allzuviel hängen geblieben ist anscheinend nicht
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:09
Zitat von Dax:
Gehts denn damit?
Code:
a.*value = 10;
Nein, geht leider auch nicht (kann ja auch nicht, da value ja kein Zeiger ist, sondern a).

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:13
Dann probier mal -> aus.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:20
Zitat von Dax:
Dann probier mal -> aus.
Nein, geht leider auch nicht. IMHO benutzt man -> nur bei Klassen und bei Structs immer den Punkt.
Naja, trotzdem Danke.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:24
Wenn du reines C benutzt gibts doch gar keine Klassen?

Naja, hab das mit dem -> im .NET-SDK gefunden

Code:
struct BTree {
   char *szText;
   BTree *Left;
   BTree *Right;
};

void PrintTree( BTree* MybtRoot ) {
   // Traverse the left branch of the tree recursively.
   if ( btRoot->Left )
      PrintTree( btRoot->Left );

   // Print the current node.
   cout << btRoot->szText << "\n";

   // Traverse the right branch of the tree recursively.
   if ( btRoot->Right )
      PrintTree( btRoot->Right );
}
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:30
So funktionierts! Danke!
Habe immer a->*value bzw *a->value benutzt, da ich unbedingt den Stern unterbringen wollte...
Aber wieso das jetzt so ist, würde ich gerne wissen. Bewirkt -> automatisch eine Dereferenzierung?
Danke, hat sich erübrigt. Mein C Buch gab Aufschluss: Der -> Operator ist extra für soetwas da.

btw: Wieso wird in dem Code von dir in der Prozedur BTree* MybtRoot deklariert, aber im Code immer nur btRoot verwendet?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 19:32
Puh, keine Ahnung warum das so ist... Nuja, kannst ja mal ins .NET2-SDK kucken unter "Indirection" bei C++ ist es das 7. Ergebnis^^
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#9

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 20:13
Ich würde es so deklarieren:
Code:
typedef struct tagTNode {
  int              value;
  struct tagTNode * next;
} TNode, * PNode;

{ ... }
    PNode a;
    a = (PNode)malloc(sizeof(TNode));
    a->value = 10;
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Zeiger auf Struct in C

  Alt 24. Mai 2006, 20:35
Zitat von NicoDE:
Ich würde es so deklarieren...
Danke, man lernt nie aus.
Nur glaube ich nicht, dass man in C P<Name> und T<Name> verwender; das sieht mir eher nach Delphi-Style aus.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz