De uns tempos para cá tenho observado que muitas pessoas adotaram a indexação de vetores/matrizes iniciando em UM.
Iniciar a contagem em ZERO, desde o início, sempre foi uma coisa elementar, talvez por comodismo alguns adotem o índice UM, ou talvez, porque foram ensinados assim ou, ainda, porque nunca se preocuparam em estudar ou mesmo porque não entendem que quando programamos um computador estamos manipulando, direta ou indiretamente, endereços de memória.
De uma forma ou outra para saciar a sede daqueles buscam conhecimento e esclarecer aos menos afortunados, segue um exemplo simples.
O primeiro print já é suficiente para provar que o índice dos vetores começa em ZERO, mas vou um pouco além provando que na verdade um vetor funciona de forma análoga a um ponteiro, ou seja é um apontador.
Iniciar a contagem em ZERO, desde o início, sempre foi uma coisa elementar, talvez por comodismo alguns adotem o índice UM, ou talvez, porque foram ensinados assim ou, ainda, porque nunca se preocuparam em estudar ou mesmo porque não entendem que quando programamos um computador estamos manipulando, direta ou indiretamente, endereços de memória.
De uma forma ou outra para saciar a sede daqueles buscam conhecimento e esclarecer aos menos afortunados, segue um exemplo simples.
O primeiro print já é suficiente para provar que o índice dos vetores começa em ZERO, mas vou um pouco além provando que na verdade um vetor funciona de forma análoga a um ponteiro, ou seja é um apontador.
#include <stdio.h>
void main () {
int i;
int vet[3] = {0, 1, 2};
int *pon;
printf("Vetor populado vet[3] = {0, 1, 2}\n");
printf("Maneira correta: INDICE O\nLendo espaco de memoria reservada.\n\n");
for (i=0; i<3; i++)
printf("Vet[%d]=%d \n", i, vet[i]);
printf("\n\nManeira errada: INDICE 1 \nInvadindo espaco de memoria nao reservada!\n\n");
for (i=1; i<4; i++)
printf("Vet[%d]=%d \n", i, vet[i]);
printf("\n\nUm laco ate 6!\n\n");
for (i=0; i<7; i++)
printf("Vet[%d]=%d \n", i, vet[i]);
printf("\n\nFuncionamento analogo aos ponteiros, \npois e um apontador!\n\n");
pon = &vet[0];
for (i=0; i<3; i++)
printf("Ponteiro^%d=%d \n", i, *(pon+i));
}
Aqueles "programas" bobos que fazemos em sala de aula té "funcionam" quando gerenciamos de maneira errada um vetor, apenas alguém que programa profissionalmente sabe as repercussões em sistema computacional de uma manipulação de memória feita de maneira equivocada.
This text is worth everyone's attention. When can I find
ResponderExcluirout more?
my site: http://ricardoalfonsinblog.com/profile-12135/info/
Hi
ExcluirIn the future I plan to write new articles about structures, file I / O, pointers and binary trees. Stay in touch soon as possible I'll write more.
Best regards
Luciano
Hi
ResponderExcluirAbsolutely, feel free to share!
Thank you
Luciano