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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 9.09
Pointer to Pointer
Scorri per mostrare il menu
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.
Grazie per i tuoi commenti!