Advanced Pointers
Pointer To Pointer
A pointer to a pointer lets a helper update which object another pointer names.
Pointer To Pointer
pointer_to_pointer.c
#include <stdio.h>
static void choose_larger(int **slot, int *left, int *right) {
if (*right > *left) {
*slot = right;
} else {
*slot = left;
}
}
int main(void) {
int left = ;
int right = 7;
int *selected = &left;
choose_larger(&selected, &left, &right);
printf("selected=%d\n", *selected);
return 0;
}
#include <stdio.h>
static void choose_larger(int **slot, int *left, int *right) {
if (*right > *left) {
*slot = right;
} else {
*slot = left;
}
}
int main(void) {
int left = ;
int right = 7;
int *selected = &left;
choose_larger(&selected, &left, &right);
printf("selected=%d\n", *selected);
return 0;
}
#include <stdio.h>
static void choose_larger(int **slot, int *left, int *right) {
if (*right > *left) {
*slot = right;
} else {
*slot = left;
}
}
int main(void) {
int left = ;
int right = 7;
int *selected = &left;
choose_larger(&selected, &left, &right);
printf("selected=%d\n", *selected);
return 0;
}
pointer slot
A pointer-to-pointer receives the address of a pointer variable, not the address of the final value.
retargeting
Writing through the pointer slot changes the caller's pointer.