Fiquei com duvidas sobre como a coluna esta sendo exibida se o professor esta exibindo somente um array da matriz, ou seja, em vez de usar mapa[i][j], ele esta usando somente mapa[i].
Onde as colunas estao sendo representadas exatamente?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Fiquei com duvidas sobre como a coluna esta sendo exibida se o professor esta exibindo somente um array da matriz, ou seja, em vez de usar mapa[i][j], ele esta usando somente mapa[i].
Onde as colunas estao sendo representadas exatamente?
Oi, Paulo.
Sua dúvida é muito comum quando começamos a trabalhar com matrizes de caracteres em C. Vamos entender como a linguagem lida com isso.
Quando você declara uma matriz como char mapa[5][11], você está criando 5 linhas, e cada uma dessas linhas é, na verdade, um array de 11 caracteres.
No C, uma string é tratada como um ponteiro para o primeiro caractere de um array. Por isso, quando usamos o código abaixo:
for(int i = 0; i < 5; i++) {
printf("%s\n", mapa[i]);
}
O que acontece é o seguinte:
%s: O formatador %s espera receber o endereço de memória onde começa uma sequência de caracteres. Ele imprime cada caractere a partir dali até encontrar o caractere nulo (\0), que indica o fim da string.mapa[i]: Ao escrever apenas mapa[i] (com apenas um índice), você está acessando a linha inteira de uma vez. Para o compilador, mapa[i] é o endereço de memória onde começa a linha i.mapa[i][j], as colunas estão lá. O printf percorre todas as colunas daquela linha automaticamente por causa do %s. Ele começa na coluna 0 e vai "andando" pelas colunas 1, 2, 3... até terminar a frase.Portanto, as colunas são representadas pelos caracteres individuais dentro de cada mapa[i]. Usar mapa[i] é uma forma simplificada de exibir o conteúdo completo daquela linha (ou seja, todas as suas colunas de uma vez) quando estamos trabalhando com textos.