Pointer Ausgabe

Erste Frage Aufrufe: 63     Aktiv: 16.06.2022 um 20:02

0

Hi,

das ist mein Code

 int main() {
    int x = 123;
    int* y = &x;
    int z = *y;    // wieso ist die Ausgabe hier 123 und nicht die Adresse von x?
    int* u = (y+1);  
    int* v = (y+5);
    printf("%d\n", x);
    printf("%d\n", z);
    printf("%d\n", *(&x));
    printf("%d\n", *(--u));
    printf("%d\n", *v); //Die Ausgabe hier ist -858993460 aber wieso? Ich verstehe nicht was hier gemacht wird und was das bedeutet? 
}

Ich würde mich sehr freuen, wenn ihr mir damit helfen könntet. Danke.

Diese Frage melden
gefragt

Punkte: 10

 
Kommentar schreiben
1 Antwort
0

Zu deiner ersten Frage:

Mit *y machst du den vorherigen Schritt wieder rückgängig, denn y speichert ja schon die Adresse von x, y ist schon ein Pointer.

Wenn du also *y machst ist das also das selbe wie *(&x) und das ergibt nunmal x.

Deine zweite Frage:

y ist der Pointer auf x. Damit ist v = y + 5 der Pointer auf den Wert 5 Adressen weiter. Da dieser Wert aber in deinem Code nicht verwendet wird, steht da irgendwas drin. Das ist eben ein zufälliger Speicherbereich. mit *v bekommst du dann den Wert der dort drin steht.

Diese Antwort melden
geantwortet

Punkte: 125

 

Kommentar schreiben