Arrays and pointers have a close relationship in C. An array name is a pointer to the first element of the array. Pointers can be used to access and modify array elements. Functions can modify arrays passed by reference by using pointers to the array elements. Pointer arithmetic and array indexing are equivalent and allow accessing successive elements of an array. Pointers to arrays can be returned from functions to access modified arrays.