![]() |
Zeiger auf Struct in C
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:
Und wie geht das in C?
type
PNode = ^TNode; TNode = record Value: Integer; Next: PNode; end; var a: PNode; begin New(a); a^.Value = 10; end; Mein Versuch:
Code:
Wie gehts richtig?
struct node
{ int value; struct node *next; }; struct node *a; a = (struct node *) malloc(sizeof(struct node)); *a.value = 10; //Geht nicht... Danke schon mal. Grüße Faux |
Re: Zeiger auf Struct in C
Gehts denn damit?
Code:
Hab mir vor Urzeiten mal einen Riesenwälzer C/C++ angetan, aber allzuviel hängen geblieben ist anscheinend nicht ;)
a.*value = 10;
|
Re: Zeiger auf Struct in C
Zitat:
Grüße Faux |
Re: Zeiger auf Struct in C
Dann probier mal -> aus.
|
Re: Zeiger auf Struct in C
Zitat:
Naja, trotzdem Danke. Grüße Faux |
Re: Zeiger auf Struct in C
Wenn du reines C benutzt gibts doch gar keine Klassen? :gruebel:
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 ); } |
Re: Zeiger auf Struct in C
So funktionierts! Danke! :D
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? :gruebel: Grüße Faux |
Re: Zeiger auf Struct in C
Puh, keine Ahnung warum das so ist... Nuja, kannst ja mal ins .NET2-SDK kucken unter "Indirection" bei C++ ist es das 7. Ergebnis^^
|
Re: Zeiger auf Struct in C
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; |
Re: Zeiger auf Struct in C
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz