Olá, Max! Tudo bem?
Durante a aula encontramos um obstáculo que seria lidar com tamanhos diferentes de mapas.
Uma possível estratégia seria ter uma matriz gigante, que suportasse o maior mapa possível. Por exemplo, uma matriz mapa[100][100]
. Nosso programa então olharia apenas para a quantidade de linhas e colunas daquele mapa, em particular, que será sempre menor que 100x100.
Entretanto, a gente tem uma forma ainda melhor de fazer isso. Podemos utilizar a função malloc
. O que essa função faz é receber como parâmetro a quantidade de bytes que precisa ser alocado, e nos devolve um ponteiro para o primeiro byte alocado.
Para que a linha mapa= malloc(sizeof(char*) * linhas);
seja executada corretamente a variável mapa
não pode mais ser declarada como char mapa [5] [10 +1];
, já que a função nos devolve um ponteiro.
Com isso declaramos da seguinte maneira:
char** mapa;
Como já vimos, o char * não é um array, mas um ponteiro para um char. Da mesma forma, char ** é um ponteiro para um char . Tornando-se um ponteiro para um ponteiro para um caractere.
Caso tenha dúvida em alguma parte que não deixei clara, estou à disposição.
Abraços!