Os arrays (vetores e matrizes) são estruturas de dados homogêneas, ou seja, são aglomerados de dados primitivos e todos de um mesmo tipo. Para se definir um aglomerado torna-se necessário especificar aquilo que é conhecido como sua dimensão, isto é, a quantidade de elementos que constituem o aglomerado e a forma como estarão dispostos. Aqui é feita apenas uma diferenciação didática entre arrays de uma, duas e três dimensões mas na verdade, conceitualmente, trata-se da mesma estrutura de dados.
Quando se fala em um array de uma dimensão (unidimensional) normalmente utiliza-se a palavra vetor. A expressão matriz geralmente é aplicada a arrays de mais de uma dimensão. A palavra matriz será usada de forma genérica para todos os tipos de arrays independentemente de sua dimensão. Esse nomes foram escolhidos dessa forma pois já são de utilização consagrada no universo das linguagens de programação. A palavra vetor, em virtude de sua grande utilização na física e matemática, traz em si a idéia de uma reta ou uma linha, (algo unidimensional) e, da mesma forma, a palavra matriz, também em virtude de sua grande utilização na física e matemática, traz em si a idéia de uma tabela ou planilha (algo bidimensional), e é exatamente essa característica que nos permite realizar uma analogia com a forma como os dados são armazenados na memória do computador.
Cada um dos componentes de um aglomerado é dito um elemento desse aglomerado. Em um vetor ou matriz os elementos estão dispostos de forma contígua na memória e não há espaços vazios entre elementos adjacentes. Nos arrays, cada um dos elementos do aglomerado é referenciado por um mesmo identificador e individualizados por índices. Conforme a dimensão do array, são utilizados um, dois ou três índices para referenciar um dado elemento.
Na orientação do interpretador Hall, as estruturas acima são declaradas da seguinte forma:
Estilo linguagem C:
array inteiro A[10];
array real B[4:5];
array cadeia C[2:4:7];
Estilo Pascal:
A: array[10] de inteiros;
B: array[4:5] de reais;
C: array[2:4:7] de cadeias;
Estilo de algoritmo (linguagem C):
declare array inteiro A[10];
declare array real B[4:5];
declare array cadeia C[2:4:7];
Estilo de algoritmo (pascal):
declare A: array[10] de inteiros;
declare B: array[4:5] de reais;
declare C: array[2:4:7] de cadeias;