Matrizes

As matrizes, assim como os vetores, são estruturas de dados homogêneas. Portanto, todos os valores precisam ser do mesmo tipo de dado. A diferença principal é que, na matriz, podemos ter mais de uma dimensão.

💡 Conceitos fundamentais

Uma matriz de duas dimensões pode ser representado visualmente da seguinte forma:

Representação gráfica de um vetor.

Assim como no vetor, cada elemento de uma matriz é armazenado em um espaço de memória exclusivo. A diferença é que, para navergamos pelas posições da matriz, usaremos dois índices: um para a linha e outro para a coluna (nesta ordem). Na linguagem C, esse indicador sempre começa a ser contado a partir do 0.

Observe também, pela figura, que embora enxerguemos essa estrutura como uma matriz (assim como aprendemos na escola), ela é armazenada como um grande vetor.

👨🏽‍💻 Do conceito ao código

A declaração de um vetor segue a seguinte abordagem:

tipo nomedamatriz[qtdeLinhas][qtdeColunas];

Logo, para declarmos um vetor de inteiros com 4 linhas e 5 colunas, usamos a seguinte sintaxe:

int numeros[4][5];

Atribuindo valores

Podemos atribuir valores à matriz desde a sua declaração, como no exemplo abaixo:

int valores[4][5] = {
    {1,2,3,4,5}, // primeira linha
    {6,7,8,9,10}, //segunda linha
    {11,12,13,14,15}, // terceira linha
    {16,17,18,19,20} // quarta linha
};

Ou, também, atribuir ou alterar esses valores ao longo da execução do programa. Nesse caso, precisamos manipular posições específicas da matriz. Para manipular uma posição específica, precisamos informar entre os colchetes [][] o índice da linha e da coluna desejadas.

Veja como exemplo:

int main(void){
    int valores[4][5];
    valores[0][0] = 1; // afeta a linha 0, coluna 0
    valores[1][0] = 7; // afeta a linha 1, coluna 0
}

Imprimindo a matriz

Para imprimir um único elemento da matriz, usamos a seguinte expressão:

printf("%d", nomedovetor[nrolinha][nrocoluna]);

Da mesma forma, para imprimirmos todos os itens de uma matriz, podemos usar laços de repetição:

for(int i = 0; i < qtdeLinhas; i++){
    for(int j = 0; j < qtdeColunas; j++){
        printf("%d ", matriz[i][j]);
    }
    printf("\n");
}