Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Pointer to Pointer | Section
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
C Pointers Mastery

bookPointer to Pointer

Sometimes you do not just want to change a value, you want to change it through another pointer. That is where a pointer to pointer comes in. Think of it like this:

  • int x holds a number;
  • int *p holds the address of x;
  • int **pp holds the address of p.

So the chain looks like:

pp → p → x → value

To reach the real value, you must dereference twice.

main.c

main.c

copy
12345678910111213141516
#include <stdio.h> void set_to_ten(int **pp) { **pp = 10; } int main() { int x = 5; int *p = &x; int **pp = &p; set_to_ten(pp); printf("%d\n", x); // prints 10 return 0; }

So basically you are setting the original variable x to 10 through two pointer levels. This is exactly what you need for the multi-level pointer task.

Note
Note

Pointer-to-pointer logic is most useful when a function must modify data that is already accessed through a pointer. If you forget one * when dereferencing, the program will compile but update the wrong level, so always double-check how many pointer layers you are working with.

question mark

What does dereferencing a pointer to pointer (*pp) return in the context where int x; int *p = &x; int **pp = &p;?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 10

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookPointer to Pointer

Swipe um das Menü anzuzeigen

Sometimes you do not just want to change a value, you want to change it through another pointer. That is where a pointer to pointer comes in. Think of it like this:

  • int x holds a number;
  • int *p holds the address of x;
  • int **pp holds the address of p.

So the chain looks like:

pp → p → x → value

To reach the real value, you must dereference twice.

main.c

main.c

copy
12345678910111213141516
#include <stdio.h> void set_to_ten(int **pp) { **pp = 10; } int main() { int x = 5; int *p = &x; int **pp = &p; set_to_ten(pp); printf("%d\n", x); // prints 10 return 0; }

So basically you are setting the original variable x to 10 through two pointer levels. This is exactly what you need for the multi-level pointer task.

Note
Note

Pointer-to-pointer logic is most useful when a function must modify data that is already accessed through a pointer. If you forget one * when dereferencing, the program will compile but update the wrong level, so always double-check how many pointer layers you are working with.

question mark

What does dereferencing a pointer to pointer (*pp) return in the context where int x; int *p = &x; int **pp = &p;?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 10
some-alt