IF-Verzweigung mit dem Zeiger



  • Hallo,

    man definiert zwei Variablen und möchte 'a' auf 'b' setzen falls sie verschieden sind.

    char *a, b;
    if (*a != b)
    	a = &b;
    

    Irgendwie ist die IF-Bedingung schief gegangen. Kann mir jemand helfen?

    Ciao
    Hauser



  • *a ist ein Pointer
    b eine 8 Bit Zahl

    a hat keinen Wert, b auch nicht - was solld das dann vergleichen ?



  • ja ein komplettes beispiel waere erstmal sinnvoller



  • Scheppertreiber schrieb:

    *a ist ein Pointer

    nö, a ist der pointer. das sternchen gehört nicht mehr zum namen.

    Scheppertreiber schrieb:

    b eine 8 Bit Zahl

    nö, b ist ein char. chars können auch breiter sein als 8 bits.

    Scheppertreiber schrieb:

    a hat keinen Wert, b auch nicht

    nö, variablen haben immer einen wert. nur sind die werte in diesem fall unvorhersehbar.

    Scheppertreiber schrieb:

    was soll das dann vergleichen

    steht doch da: ob der char, auf den der pointer zeigt, nicht den gleichen wert hat wie b.
    🙂



  • ~fricky schrieb:

    Scheppertreiber schrieb:

    *a ist ein Pointer

    LOL! 🕶



  • Hauser schrieb:

    Hallo,

    man definiert zwei Variablen und möchte 'a' auf 'b' setzen falls sie verschieden sind.

    char *a, b;
    if (*a != b)
    	a = &b;
    

    Irgendwie ist die IF-Bedingung schief gegangen. Kann mir jemand helfen?

    Ciao
    Hauser

    das ist viel einfacher als du denkst: vergleich pointer-pointer oder zuweisung pointer-pointer geht genauso wie variable-wert

    char *a, *b;
    if (a != b)
    	a = b;
    


  • diddler schrieb:

    Hauser schrieb:

    Hallo,

    man definiert zwei Variablen und möchte 'a' auf 'b' setzen falls sie verschieden sind.

    char *a, b;
    if (*a != b)
    	a = &b;
    

    Irgendwie ist die IF-Bedingung schief gegangen. Kann mir jemand helfen?

    Ciao
    Hauser

    das ist viel einfacher als du denkst: vergleich pointer-pointer oder zuweisung pointer-pointer geht genauso wie variable-wert

    char *a, *b;
    if (a != b)
    	a = b;
    

    Hier werden nur die Adressen verglichen. Zum Vergleich des Inhalts muss man strcmp nutzen.



  • blalblabla schrieb:

    Hier werden nur die Adressen verglichen. Zum Vergleich des Inhalts muss man strcmp nutzen.

    wer sagt denn, dass die char* auf 0-terminierte strings zeigen?
    🙂


Anmelden zum Antworten