Pointer 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 xholds a number;int *pholds the address ofx;int **ppholds the address ofp.
So the chain looks like:
pp → p → x → value
To reach the real value, you must dereference twice.
main.c
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.
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 9.09
Pointer to Pointer
Pyyhkäise näyttääksesi valikon
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 xholds a number;int *pholds the address ofx;int **ppholds the address ofp.
So the chain looks like:
pp → p → x → value
To reach the real value, you must dereference twice.
main.c
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.
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.
Kiitos palautteestasi!