Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Peixoto

Tamanho de uma matriz

Recommended Posts

:( Alguem poderia explicar o texto abaixo ?

o compilador C calcula o tamanho, em bytes, necessário para armazenar uma matriz. Este tamanho é: tam1 x tam2 x tam3 x ... x tamN x tamanho_do_tipoO compilador então aloca este número de bytes em um espaço livre de memória. O nome da variável que você declarou é na verdade um ponteiro para o tipo da variável da matriz. Este conceito é fundamental. Eis porque: Tendo alocado na memória o espaço para a matriz, ele toma o nome da variável (que é um ponteiro) e aponta para o primeiro elemento da matriz. Mas aí surge a pergunta: então como é que podemos usar a seguinte notação? nome_da_variável[índice]Isto pode ser facilmente explicado desde que você entenda que a notação acima é absolutamente equivalente a se fazer: *(nome_da_variável+índice)Agora podemos entender como é que funciona um vetor! Vamos ver o que podemos tirar de informação deste fato. Fica claro, por exemplo, porque é que, no C, a indexação começa com zero. É porque, ao pegarmos o valor do primeiro elemento de um vetor, queremos, de fato, *nome_da_variável e então devemos ter um índice igual a zero. Então sabemos que: *nome_da_variável é equivalente a nome_da_variável[0]

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá Peixoto td bem?cara é o seguinte matrizes e vetores são meio chatos mas são os mais funcionais. bom a explicação de o pq ele começa no 0, na miha opinião é pq ele é o 1º numero, msm sendo o "0":Dentão 0 sempre é a 1ª posição de um vetor e tipo se ele for de 10 posições(exemplo: vet[10]), lembre-se q ele começa no 0 e por isso esse vetor percorrerá até o 9, já q forma 10 posições a msm çógica pode- se ser aplicada a matriz.abracos e boa sorte!!!espero ter ajuda!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que ele está dizendo é que vetores são de certo modo ponteiros.

 

Imagine a situação:

int *ponteiro;

 

Declaramos um ponteiro para um inteiro.

 

Se fizermos ponteiro++ é diferente de fazermos *ponteiro++;

No primeiro caso ele vai incrementar a memória para o qual o ponteiro aponta, e apontará para um outro elemento.

No segundo caso ele incrementará o valor para o qual o ponteiro aponta.

 

Se você pensar bem, este ponteiro com a memória devidamente alocada tem o funcionamento igual ao de um vetor.

 

Como nós acessamos o primeiro elemento do vetor?

vetor[0]

Como nós acessamos o primeiro elemento do ponteiro?

*ponteiro OU *(ponteiro+0)

 

Como nós acessamos o segundo elemento do vetor?

vetor[1]

Como nós acessamos o segundo elemento do ponteiro?

*(ponteiro+1)

 

E por aí vai...

 

Espero ter entendido, qualquer dúvida poste aí que vamos complementando...

 

Ponteiro é meio complicado no início mas é muito importante para um programador experiente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.