Advanced Pointers
Swap Pointers
Swapping pointer variables changes which data each name refers to.
Swap Pointers
swap_pointers.c
#include <stdio.h>
static void swap_int_pointers(int **first, int **second) {
int *temp = *first;
*first = *second;
*second = temp;
}
int main(void) {
int a = ;
int b = 10;
int *left = &a;
int *right = &b;
swap_int_pointers(&left, &right);
printf("left=%d right=%d\n", *left, *right);
return 0;
}
#include <stdio.h>
static void swap_int_pointers(int **first, int **second) {
int *temp = *first;
*first = *second;
*second = temp;
}
int main(void) {
int a = ;
int b = 10;
int *left = &a;
int *right = &b;
swap_int_pointers(&left, &right);
printf("left=%d right=%d\n", *left, *right);
return 0;
}
#include <stdio.h>
static void swap_int_pointers(int **first, int **second) {
int *temp = *first;
*first = *second;
*second = temp;
}
int main(void) {
int a = ;
int b = 10;
int *left = &a;
int *right = &b;
swap_int_pointers(&left, &right);
printf("left=%d right=%d\n", *left, *right);
return 0;
}
pointer variable
The pointer itself is a variable whose stored address can be replaced.
alias movement
After a swap, each pointer name aliases a different object.