016
14.10.2005, 14:21 Uhr
Lewi
|
Zitat von Lewi: |
[quote ~thorsten1896]also ich habe zweit zeiger vom typ
xxx beinhaltet ein integer und andere Variablen z.B. nr. name usw.
deklaration:
xxx *a;
xxx *b;
nun möchte ich abfragen ob (a->nr == b->nr) ist?
k.a. wie ich das schreiben muss. (*a->nr == *b->nr) funktioniert alles irgendwie nicht so wie ich das will...
(&a->nr == &b->nr)
danke für eure Hilfe und bemühungen :-)
|
Nehmen wir mal das Posting Nummer 002 als Basis, dann kann vielleicht geholfen werden. Mal angenommen, Deine Funktion sieht in etwa aus wie die folgende
/*01*/ int main() /*02*/ { /*03*/ xxx *a; /*04*/ xxx *b; /*05*/ int result; /*06*/ /*07*/ if(a->nr = b->nr) /*08*/ { /*10*/ printf{"TREFFER ---- a->nr=%d b->nr=%d",a->nr,b->nr} /*11*/ result = 1; /*12*/ } /*13*/ else /*14*/ { /*15*/ printf{"WAR NICHTS ---- a->nr=%d b->nr=%d",a->nr,b->nr} /*16*/ result = 0; /*17*/ }; /*18*/ /*19*/ return result; /*20*/ };
In diesem Falle bringt die if-Abfrage in Zeile 07 nichts, weil Du lediglich die Pointer definiert hast, aber die Pointer irgendwo hinzeigen, nur nicht auf eine Struktur. Es ist sogar dringend abzuraten, dem Element nr irgendeinen Wert zuzuweisen, da Du keine Ahnung hast, wo diese hinzeigen. Mach Dir aber nichts draus, mein AMIGA hat damals sehr sehr viel gelitten, als ich den Umgang mit Pointer gelernt habe. Nimm das Programm einfach, jag es durch den Compiler und sieh mal was rauskommt, musst nur den Datentypen anpassen.
Nehmen wir aber statt dessen den folgenden Code
/*01*/ xxx array[10]; /*02*/ /*03*/ int function() /*04*/ { /*05*/ xxx *a; /*06*/ xxx *b; /*07*/ int result; /*08*/ /*09*/ a = &array[3]; /*10*/ b = &array[7]; /*11*/ /*12*/ a->nr = 12; /*13*/ b->nr = 12; /*14*/ /*15*/ if(a->nr = b->nr) /*16*/ { /*17*/ printf{"TREFFER ---- a->nr=%d b->nr=%d",a->nr,b->nr} /*18*/ result = 1; /*19*/ } /*20*/ else /*21*/ { /*22*/ printf{"WAR NICHTS ---- a->nr=%d b->nr=%d",a->nr,b->nr} /*23*/ result = 0; /*24*/ }; /*25*/ /*26*/ return result; /*27*/ };
Hier wird in Reihe 01 erstmal ein Array angelegt aus 10 Deiner Strukturen angelegt. In Zeile 05 und 06 werden die Pointer a und b angelegt. Besonders wichtig sind nun die Zeilen 09 und 10, denn dort wird den Pointer gesagt, wo sie hin zeigen sollen.
MERKE: Erst muss was da sein (das ARRAY) und dann darf erst was da hin zeigen (der POINTER).
Die Zeilen 12 und 13 weisen den Elementen nr den Wert 12 zu, und zwar dem Element nr aus Struktur 3 mit dem Pointer a und dem Element nr aus Struktur 7 mit dem Pointer b.
Anschliessend wird Dein Vergleich wohl hoffentlich nur Treffer anzeigen.
Auch hier wieder durch den Compiler jagen und Anpassen von Datentypen nicht vergessen.
Gruss Lewi[/quote]
!!!!!!! HHHAAAAALLLLLLTTTTTTT !!!!!!!!!!!!
Kommando zurueck !!!!
Zeile 07 und 15 meiner Postings muss
if(a->nr == b->nr)
statt
if(a->nr = b->nr)
heissen
Sorry fuer den Fehler |