Variable x dereferenzieren...



  • Guten Abend,

    ich sehe mir gerade eine Vorlesung auf Youtube an und versuche das mitzuverfolgen... jedoch verstehe ich nicht, was der Typ gemacht hat.

    Ich denke mir, dass sich hier niemand das Video anschauen will.
    http://www.youtube.com/watch?v=Rxvv9krECNw&feature=related

    Aber falls doch, wäre ich glücklich. Ab 12min erklärt er´s.

    Er wollte im Prinzip eine Variable x derefenzieren, jedoch mach ich anscheinend was falsch.

    #include <stdio.h>
    
    int main()
    {
    	int x;
    	int carray[3][3] = {0,1,2,3,4};
    	x = carray[2][2];
    	printf("%d\n", x);
    	printf("%d\n", *x);     /* Compiler meldet Fehler: "Derefenzierung Ungültig */
    	return 0;
    }
    

    Was habe ich hier falsch gemacht?

    Gruß Friedrich



  • Was der Typ da erklärt ist Blödsinn. C interpretiert nicht einfach einen Integer als Pointer. Dazu benötigt man einen Cast. Aber eigentlich will man das auch gar nicht (da int zB zu groß oder zu klein für eine Adresse sein könnte)

    Wenn man denn so will, dann

    printf("%d", *(int*)x);
    

    und dann sollte man uintptr_t für x nehmen (aus stdint.h).



  • *stirnrunzel*

    Das heißt er erklärt da totalen Bullshit mit dem ich mir jetzt mein Hirn versorge?

    Es kann sein, dass ich es überhaupt falsch verstanden habe,... hmmm.

    Danke rüdiger.



  • ich hab mir nur das angeschaut, was er um Minute 12 rum erzählt und das ist falsch. Auch wenn die Idee dahinter stimmt. Adressen sind im Grunde Zahlen (aber kein int !) und der Dereferenzieroperator (unary* genannt) holt eben den Wert, der an dieser Adresse steht.



  • Hey,

    danke rüdiger für deine Zeit.
    hat mir sehr geholfen!

    Lg Friedrich



  • Hi,

    rüdiger schrieb:

    und dann sollte man uintptr_t für x nehmen (aus stdint.h).

    aber jetzt is die Frage gibts des nicht erst seitn 99er Std!? Weil muss ehrlich sagen kannt ich noch ned und nach einem kleinen Blick auf Wiki hat er mir das erzaehlt. Auch meine VSC++ 2k8 kennt das File ned.

    Peace C0de4Fun



  • Hallo,

    aber jetzt is die Frage gibts des nicht erst seitn 99er Std!?
    

    Genau so ist es..

    C0de4Fun schrieb:

    Auch meine VSC++ 2k8 kennt das File ned.

    Microsoft hat schon lange nichts mehr getan, um den C-Compiler auf den aktuellen Standard zu bringen.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten