Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dúvida] O lixo nos vetores

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ [Dúvida] O lixo nos vetores

    Olá galera, eu tava estudando aqui e acabou me surgindo uma dúvida...
    Compilem esse programa:

    #include <stdio.h>
    #define DIM 20
    int main(void) {
    int i, semlixo[20] = {1, 2, 3}, comlixo[20];
    comlixo[0] = 1;
    comlixo[1] = 2;
    comlixo[2] = 3;

    printf("Sem lixo: \n");
    for(i = 0 ; i < DIM ; i++){
    printf("%d\n", semlixo[i]);
    }

    printf("\n\nCom lixo: \n");
    for(i = 0 ; i < DIM ; i++){
    printf("%d\n", comlixo[i]);
    }
    }

    Eu percebi que quando você inicializa com chaves o vetor ele tira o "lixo" que fica na memória das posições que você não usou, diferente do que aconteceu com o vetor "comlixo", que inicializei 3 posições sem usar chave e acabou que as outras posições continuaram com lixo.
    Aparentemente, isso serve para qualquer tipo, se vocês trocarem o tipo int pra char verão que onde foi inicializado com chave, as posições não ocupadas são preenchidas com espaço vazio.

    Alguém sabe me explicar por que isso acontece?
    Similar Threads

  • Font Size
    #2
    Posso estar errado, mas quando voce cria um vetor de 3 valores, voce esta separando 3 espacos na memoria para armazenar esses valores,
    quando voce inicializa o vetor, voce define os valores para esses 3 espacos.
    Se voce nao inicalizar e acessar os indices do vetor, vai ver que tem alguns valores la, esses valores sao dados que foram utilizados por outros programas naquele mesmo endereco da memoria.

    Comment

    X
    Working...
    X