In C, memory is just a giant array of bytes. Every variable, string, and struct lives at some address in this array.
Memory: A giant array of bytes
ββββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ
β 0 β 1 β 2 β 3 β 4 β 5 β 6 β 7 β 8 β... β
ββββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ
β
Address 0x0003
int x = 42; // x might be at address 0x1000
int *p = &x; // p stores 0x1000
π― Key Insight: A pointer is just an integer that happens to represent an address!