Disclaimer: this is how I understand it, not saying this is absolutely correct.

In the C language the programmer can use pointers. Pointers basically point to the location of memory for a variable and not necessarily the variable itself. This in essence is how you can have functions mutate data in C, by passing them the memory reference for a variable and letting that function make changes to it. You can also push around functions by pointing to them.

int variable;
int *variablePointer;

// the reference of the variable's address
&variable