Arrays allow storing multiple values of the same type under a common name. One-dimensional arrays use a single subscript to access elements, while multi-dimensional arrays use multiple subscripts. Strings are arrays of characters terminated by a null character. Functions allow breaking programs into smaller, reusable parts. Functions can accept arguments, return values, or have no arguments and return nothing. Variables declared inside functions have automatic storage, while those outside have external storage.