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