A pointer to a struct lets a function update the original grouped value.

Struct Pointers

struct_pointers.c
#include <stdio.h>

struct Point {
    int x;
    int y;
};

void moveRight(struct Point *point, int delta) {
    point->x = point->x + delta;
}

int main(void) {
    int delta = ;
    struct Point point = {3, 4};

    moveRight(&point, delta);

    printf("x=%d y=%d\n", point.x, point.y);
    return 0;
}
#include <stdio.h>

struct Point {
    int x;
    int y;
};

void moveRight(struct Point *point, int delta) {
    point->x = point->x + delta;
}

int main(void) {
    int delta = ;
    struct Point point = {3, 4};

    moveRight(&point, delta);

    printf("x=%d y=%d\n", point.x, point.y);
    return 0;
}
#include <stdio.h>

struct Point {
    int x;
    int y;
};

void moveRight(struct Point *point, int delta) {
    point->x = point->x + delta;
}

int main(void) {
    int delta = ;
    struct Point point = {3, 4};

    moveRight(&point, delta);

    printf("x=%d y=%d\n", point.x, point.y);
    return 0;
}
arrow operator `point->x` means the `x` field of the struct pointed to by `point`.
update original Passing a pointer lets the function write back into the caller's struct.