Массив - набор однотипных(на самом деле зависит от ЯП) элементов последовательно расположенных в памяти, доступ к которым осуществляется по индексу.
Массив нужен для именования группы элементов(обычно однотипных) одной переменной с озможностью обращения к произвольному элементу.
Какой бывает...ну тут можно по разному разделять.
По числу индексов:
*Одномертый(вектор);
*Двумерный(матрица);
*Трехмерный;
*и т.д. максимальное число индексов зависит от конкретного ЯП.
По типу хранимых данных:
*Однотипные;
*Гетерогенные.
По размерности:
*Статические - максимальное число элементов определено изначально.
*Динамические - максимальное число элементов может изменяться по ходу программы.