Pointers in C allow both direct access to memory locations and indirect access through dereferencing. Arrays are stored contiguously in memory and decay to pointers to their first element when passed to functions. This allows arrays to be accessed and iterated over through pointer arithmetic. Multidimensional arrays can be implemented as arrays of pointers, with each element of the outer array pointing to the first element of the inner array. Strings are commonly implemented as arrays of characters terminated by a null character. Functions in string.h operate on null-terminated character arrays through pointers.