C - Pointer auf Pointer Verständnisproblem!?



  • Hallo,
    verstehe eigentlich (glaube ich jedenfalls) jede Zeile bis auf die letzte: printf("*k = %p\n", *k);
    Die Ausgabe von der letzen Zeile ist: *k = 0x7fff5c373b18

    Warum zeigt Pointer *k auf die Speicheradresse von i?
    Kann wer mir bitte das erklären?

    Vielen Dank im Voraus.

    Mit freundlichen Grüßen

    int main(){
      int i = 10;
      int *j = &i;
      int **k = &j;
    
      printf("i = %d\n", i);
      printf("*j = %d\n", *j);
      printf("**k = %d\n", **k);
      printf("&i = %p\n", &i);
      printf("&j = %p\n", &j);
      printf("&k = %p\n", &k);
      printf("j = %p\n", j);
      printf("k = %p\n", k);
      printf("*k = %p\n", *k);
      return 0;
    }
    
    Ausgabe:
    i = 10
    *j = 10
    **k = 10
    &i = 0x7fff5c373b18
    &j = 0x7fff5c373b10
    &k = 0x7fff5c373b08
    j = 0x7fff5c373b18
    k = 0x7fff5c373b10
    *k = 0x7fff5c373b18


  • Hallo,

    k ist ein Zeiger auf j, das heißt *k ist gleich j. Und da j ein Zeiger auf i ist, ist *k eben die Adresse von i.



  • Vielen Dank Bashar! 🙂


Anmelden zum Antworten