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.