Arrays and pointers are closely related in C. Arrays represent contiguous blocks of memory containing elements of the same type. The array name acts as a pointer to the first element. Pointers store memory addresses, and can be used to access array elements through dereferencing. Strings are implemented as character arrays terminated with a null character. Functions receive arrays as pointers, so the array size must be explicitly passed to avoid bounds errors.