Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zeiger in if abfrage ???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
13.10.2005, 20:30 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich hab so die vermutung hier wird mit pointern auf structs gearbeitet die ins nirvana zeigen weil keiner speicher allokiert wurde...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
13.10.2005, 21:52 Uhr
ao

(Operator)


Solange keine Fakten auf den Tisch kommen (sprich Quellcode), kann man so ziemlich alles vermuten. Ist mir aber zu öde, drum warte ich lieber noch ab

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
14.10.2005, 08:37 Uhr
(un)wissender
Niveauwart


Ich habe manchmal auch keine Ahnung, warum sich die Leute mit aller Kraft wehren, wenn versucht wird, ihnen zu helfen. Ich verstehe es wirklich nicht...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
14.10.2005, 09:50 Uhr
Lewi



Kurz und knapp, schick mal den ganzen Code ein, dann sehen wir mal weiter.

Lewi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
14.10.2005, 13:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


der code, der nie funktionieren wird, ist vermutlich top secret
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
14.10.2005, 14:10 Uhr
Lewi




Zitat von ~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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
14.10.2005, 15:11 Uhr
Pablo
Supertux
(Operator)


irgendwie willst du uns nicht verstehen oder uns verarschen (das denke ich am ehesten). Aber wir wollen wissen, was sich hinter dem xxx* a versteckt. Was ist ist xxx?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
14.10.2005, 15:14 Uhr
Tommix



Nun beruhigt euch mal wieder, vielleicht hat er seit seinem letzten Post nicht mehr reingeschaut.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
14.10.2005, 15:49 Uhr
(un)wissender
Niveauwart


Hast ja recht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: