Pointer
A pointer is a variable that stores the memory address of another variable instead of a value. In C and C++, &x gives the address of x, and *p reads or changes the value at the address held in p (dereferencing).
Pointers allow passing large data to functions without copying it, changing a caller's variables, dynamic memory allocation (malloc, new) and building linked structures such as lists and trees. They are also a common source of bugs: null pointers, dangling pointers to freed memory and buffer overruns. Java, Python and C# use references, which point to objects but cannot be manipulated as raw addresses.
int x = 10;
int *p = &x; // p holds the address of x
*p = 20; // changes x through the pointer
printf("%d", x); // 20
