You can add integers to pointers: if ptr points to arr[0], then ptr + 1 points to arr[1]. The compiler scales the addition by the type size, so adding 1 to an int* moves 4 bytes (one integer) forward in memory.
This makes array traversal natural: int* ptr = arr; then ptr++, ptr++, ptr++ walks through consecutive elements. You access each element with *ptr without needing indices. I'll show you both styles.
Pointer arithmetic works well for sequential access, while array indices work better when you need random access. You can subtract pointers too: arr + 5 - arr equals 5.