It's not the same as (index + arr). arr is a pointer to the beginning address of a series of particular "types". These types have a specific size in memory. Index increments the pointer by (n * size_of(type)).
arr[index] == arr + (n * size_of(type)) == (n * size_of(type)) + *arr