"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como podemos implementar matrizes irregulares em C/C++?

Como podemos implementar matrizes irregulares em C/C++?

Publicado em 17/11/2024
Navegar:618

How Can We Implement Jagged Arrays in C/C  ?

Compreendendo matrizes irregulares em C/C

Embora o conceito de matrizes irregulares, onde as linhas podem ter comprimentos variados, não seja diretamente suportado em padrão C/C , existem técnicas para obter funcionalidade semelhante.

Ao tentar declarar uma matriz irregular em C/C conforme mostrado abaixo:

int jagged[][] = { {0,1}, {1,2,3} };

o compilador apresenta erros, destacando o requisito de especificar limites para todas as dimensões, exceto a primeira. Para superar essa limitação, uma abordagem alternativa é utilizar uma matriz de ponteiros.

Criando matrizes irregulares usando uma matriz de ponteiros

Em C, uma matriz irregular pode ser implementada usando uma série de ponteiros. Cada elemento desta matriz aponta para uma submatriz alocada dinamicamente, onde cada submatriz tem seu próprio comprimento variável.

Por exemplo:

int *jagged[5];

// Assign memory to each subarray
jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);

// Accessing elements
*jagged[0] = 0;
*(jagged[0]   1) = 1;

*jagged[1] = 1;
*(jagged[1]   1) = 2;
*(jagged[1]   2) = 3;

// Free memory after use
free(jagged[0]);
free(jagged[1]);

Este método permite a criação de arrays com linhas de tamanhos variados, simulando o comportamento de um array irregular. É importante observar que a memória de cada subarray deve ser alocada dinamicamente e liberada manualmente para evitar vazamentos de memória.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3