Matrizes
Matrizes são estruturas multidimensionais que nos permitem representar coleções de valores do mesmo tipo de dados em C. Elas são especialmente úteis quando precisamos lidar com conjuntos de dados que têm uma estrutura organizada. As dimensões mais comuns para matrizes em C são bidimensionais (2D) e tridimensionais (3D), embora matrizes N-dimensionais sejam igualmente possíveis (onde N é maior ou igual a 2).
Declaração de matrizes
Vamos começar com uma matriz bidimensional. Para declarar uma matriz, usamos a seguinte sintaxe:
tipo nome_da_matriz[linhas][colunas];
Por exemplo, para criar uma matriz de inteiros com 3 linhas e 4 colunas, fazemos:
int matriz[3][4];
Atribuição e acesso de valores
Para atribuir um valor a uma posição específica da matriz, usamos a seguinte sintaxe:
nome_da_matriz[linha][coluna] = valor;
Para acessar o valor em uma posição específica, usamos:
tipo valor = nome_da_matriz[linha][coluna];
Agora, se estivermos lidando com matrizes de dimensão N, a declaração seria semelhante à seguinte:
tipo nome_da_matriz[dimensão_1][dimensão_2]...[dimensão_N];
Passagem de matrizes para funções
Ao passar matrizes como argumentos para funções em C, apenas o ponteiro para o primeiro elemento é transmitido. O compilador C não possui informações sobre o tamanho de cada dimensão da matriz multidimensional. Para resolver isso, você pode especificar todas as dimensões no parâmetro da função ou especificar todas, exceto a primeira.
Alocação de memória e acesso de elementos
As matrizes em C são alocadas de forma contínua na memória. Para obter a posição de um elemento específico em uma matriz bidimensional, você pode usar a seguinte fórmula:
posição de um elemento da matriz = (linha * quantidade_de_colunas) + coluna
Isso permite calcular a posição exata do elemento na memória.
Note
É fundamental notar que a linguagem C não fornece o número de colunas de uma matriz (no caso de matrizes bidimensionais) quando ela é passada como argumento de funções. Portanto, você deve tomar cuidado ao trabalhar com matrizes e garantir que sua lógica esteja de acordo com as dimensões corretas da matriz.