- Pointers store memory addresses, which are integer values that require 2 bytes of memory regardless of the data type being pointed to.
- Pointer arithmetic depends on the data type, with pointers to integers incrementing by 2 bytes each time and pointers to floats incrementing by 4 bytes each time to reach the next memory address.
- Dynamic memory allocation is needed to declare arrays of unknown size at runtime, since the compiler needs to know how much memory to allocate at compile time.