Forum: Compiler & IDEs was macht "->" ?


von technikus (Gast)


Lesenswert?

Hallo Leute,

ich bin heute über folgende c Zeile gestplpert
1
mode  = ptast->mode;

Was macht der Befehl "->" ?


Gruß
technikus

von Jörg G. (joergderxte)


Lesenswert?

C-Buch lesen?
Kurzfassung:
"pointerAufStruct -> member" ist dasselbe wie 
"(*pointerAufStruct).member"

Aber da du wohl so oder so ein C-Buch lesen musst, spare ich mir Details 
;)

hth, Jörg

von Hans (Gast)


Lesenswert?

In C++ ist das doch ein This-Zeiger weiß nicht ob dir das was hilft, da 
ich noch nicht solang C programmier

von sebastian (Gast)


Lesenswert?

@hans & technikus

C Buch lesen!!

@hans

ja, jede instanzierte Klasse (Objekt) hat einen so gegannten this Zeiger 
auf die Member Attribute / Funktionen.

Du kannst auch sagen (*this).Deine_Member_Variable

oder this->Deine_Member_Variable

das ist äquivalent!

Aber this pointer braucht man nur (C++), wenn man einem anderen Objekt 
den Zeiger auf sich selbst (anderes Objekt) geben möchte... aber das is 
eigentlich auch egal und tut nix zur Sache..

wie gesagt jeder der C / C++ / C# .. programmiert sollte wissen, dass

pointer_auf_struct->Member_in_struct dasselbe ist wie

variable_von_struct.Member_in_struct

ist!

Ciao

von Matthias L. (Gast)


Lesenswert?

>Aber this pointer braucht man nur (C++), wenn man einem anderen Objekt
>den Zeiger auf sich selbst (anderes Objekt) geben möchte...

Und in ST ist das der ADRINST() Operator....
(Wird leider nicht von jeder SPS unterstützt)

von Sven P. (Gast)


Lesenswert?

sebastian schrieb:
> Aber this pointer braucht man nur (C++), wenn man einem anderen Objekt
> den Zeiger auf sich selbst (anderes Objekt) geben möchte... aber das is
> eigentlich auch egal und tut nix zur Sache..

Den braucht man, wenn ich mich recht entsinne, hin und wieder auch, wenn 
man seine Klassenmitglieder durch andre Variablen oder sowas verdeckt, 
was man natürlich tunlichst vermeiden sollte.

von Mark B. (markbrandis)


Lesenswert?

Hans schrieb:
> In C++ ist das doch ein This-Zeiger weiß nicht ob dir das was hilft, da
> ich noch nicht solang C programmier

Ein this-Zeiger heißt so, weil er this heißt ;-) und so aussieht:
1
this->hier_steht_ein_beliebiger_Member_der_Klasse_von_der_das_Objekt_instanziiert_wurde_mit_dem_man_gerade_rumnudelt

Nur weil da ein -> steht, hat das noch lange nichts mit this zu tun. Vor 
dem -> kann ja auch was völlig anderes stehen.

Sven P. schrieb:
> sebastian schrieb:
>> Aber this pointer braucht man nur (C++), wenn man einem anderen Objekt
>> den Zeiger auf sich selbst (anderes Objekt) geben möchte... aber das is
>> eigentlich auch egal und tut nix zur Sache..
>
> Den braucht man, wenn ich mich recht entsinne, hin und wieder auch, wenn
> man seine Klassenmitglieder durch andre Variablen oder sowas verdeckt,
> was man natürlich tunlichst vermeiden sollte.

Oh Mann... ich seh schon, hier sind die wahren C++ Experten am Start. 
:-)

von Ingo L. (grobian)


Lesenswert?

Guten morgen liebe Forumer,

hätte da auch ne Frage:
was macht " ^= " ?

Gruß aus Berlin

von Ed (Gast)


Lesenswert?

Hi,

foo ^= bar;
ist die Kurzform für
foo = foo ^ bar;
wobei ^ der bitweise XOR-Operator (exklusives Oder) ist.

-Ed

von Ingo L. (grobian)


Lesenswert?

bedeutet also wenn ich eine Maske verknüpfe

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
??

von Ahem (Gast)


Lesenswert?

>bedeutet also wenn ich eine Maske verknüpfe

>0 + 0 = 0
>0 + 1 = 1
>1 + 0 = 1
>1 + 1 = 0
>??

Ich kann gerade Deinem Satzbau nicht folgen. Was ist die Frage?

Wenn, dann müsste es jedenfall so heissen:

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

Das ^ ist in C das Zeichen für die Exklusiv-Oder Verknüpfung.
Insofern stimmt Deine Wertetabelle.

von Ingo L. (grobian)


Lesenswert?

+ sollte ^ heissen  ..sorry..der Morgen halt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.