Control flow statements determine the order in which program instructions are executed. They include conditional branches (if/else), loops (while, for, do-while), and jumps. Arrays allow storing multiple values of the same type together in contiguous memory locations that can be individually referenced using an index. Multi-dimensional arrays generalize this by storing arrays inside other arrays, allowing modeling of matrices. They require nested loops for processing all elements.