Какое обьявление массива в c++?
Массив - это непрерывная область памяти (буфер) определенного типа.
С++ на уровне языка определяет для этого два средства: статические массивы (a[10]) и выделение блоков памяти, на которые можно ссылаться через указатель (int *a = new int[10];)
Но, в отличие от многих других языков, C++ не котролирует выход за границы массива, в результате чего можно сделать так:int a[10];
a[333] = 5; // запись в ячейку памяти 
//по адресу 334 * sizeof(int) от начала массива.
Кроме того, для массивов, расположеных в куче (выделенных с помощью new) нельзя определить их реальные размеры (для статических массивов мы можем сделать sizeof(a)/sizeof(int)). Кроме того передавать многомерные массивы в функции, оперировать с динамическими массивами (изменяющими размер в процессе работы) и многие другие проблемы. Для их решения существует класс std::vector, который дарит нам абстракцию над массивом в хипе.
PS С С++11 появился еще std::array, который является абстракцией над статическим массивом.
разница между этими массивами в том, что первый массив - массив, а второй массив - не массив ни разу.