Inicializando vetores – Vetor de caracteres e Lixo

Agora que você aprendeu o que são vetores, como declarare viu alguns exemplos de seu uso, vamos explicar um pouco mais sobre a inicialização de vetores e os cuidados que devemos ter ao manipular vetores, ou arrays, em C.

Aproveitando o assunto sobre cuidados com vetores, vamos mostrar neste tutorial de nossa apostila de C o que são os ‘lixos’ que ficam nos vetores (e variáveis), como nos vetores de caracteres.

Inicializando vetores

Assim como nas variáveis, podemos inicializar os vetores assim que declaramos.
Como são vários valores, temos que colocar todos esses valores entre chaves {}.

Veja, pra inicializar um vetor de 3 inteiros:
int numeros[3] = { 1, 2, 3};

Ou seja:
numeros[0] = 1;
numeros[1] = 2;
numeros[2] = 3;


E para caracteres? Ora, vale o mesmo.
Vamos armazenar a frase: C Progressivo
Com o caractere de new line \n, temos que declarar 14 caracteres (incluindo o espaço em branco, que também é um char em C).

Para exibir, nossa programa ficaria assim:

#include <stdio.h>
 
int main()
{
    char curso[14] = {'C', ' ', 'P', 'r', 'o', 'g', 'r'
                     , 'e', 's', 's', 'i', 'v', 'o','\n'};
    int indice;
 
    for(indice=0 ; curso[indice] != '\n' ; indice++)
        printf("%c", curso[indice]);
}


Consegue, só olhando o código, saber o que vai acontecer?

Mas um vetor de caracteres é uma coisa especial, em linguagem C, chamada string, e teremos uma seção em nosso curso especialmente dedicada ao estudo das strings, de tão importantes que elas são.






O que é o Lixo, em linguagem C

Já se perguntou por que declaramos variáveis? Aliás, o que é declarar?
O ato de declarar é sinônimo de alocar. Quando declaramos uma variável, estamos alocando (separando) um espaço na memória do computador para ela.

Lembra que dissemos que é uma linguagem de baixo nível, que trabalha no ‘talo’ da sua máquina?
Pois é, declarar é como dizer: “Ei C, separa um pedaço da memória pra essa variável, ok?”

Mas nos espaços da memória já existem ‘coisas’, números, bits, dados...enfim, todo bloquinho da memória do seu computador já foi usando antes, por outros programas que deixaram ‘vestígios’.

Diferente de outras linguagens, como Java que cada variável inicie com valor zero, ‘’ ou NULL
, o C não limpa esses espaços. É um erro muito comum dos iniciantes não inicializar suas variáveis, então quando vão rodar seus programas percebem uns números gigantes e/ou negativos, totalmente nada a ver.


Vamos captar alguns lixos!
Declare um vetor, de quantas posições quiser de 10, por exemplo.
Não inicie nada, vamos ver que valores estavam armazenados antes do C alocar esses espaços para nosso aplicativo.

Para isso, basta rodar um laço que percorra todos as casas e verá o tanto de coisas bizarras que aparecem:

#include <stdio.h>

int main()
{
    int lixo[10];
    int indice;

    for(indice=0 ; indice < 11 ; indice++)
        printf("Lixo na posicao %d: %d\n", indice, lixo[indice]);
}

No caso, até extrapolamos os valores do índice do vetor, e fomos até a posição 10.
Podemos fazer isso pois quando o C seleciona um espaço de memória pra vetores, ele tenta sempre alocar espaços contíguos (vizinhos).

Teste com caracteres também:

#include <stdio.h>

int main()
{
    char lixo[10];
    int indice;

    for(indice=0 ; indice < 11 ; indice++)
        printf("Lixo na posicao %d: %c\n", indice, lixo[indice]);
}

Interessante, não?
Como já dizia o filósofo programado C: há mais coisas entre o programa e o hardware que nossa vã programação imagina.


6 comentários:

O Ka, a Roda e o Vento disse...

Gostaria de registrar um elogio por ser de fácil compreensão as informações aqui encontradas. Estão mandando bem.

Anônimo disse...

Parabens! otimo conteudo e muito bem explicado!!!!

Bit Help Informática disse...

Olá, estou começando agora em C e já estou cheio de dúvidas. Quero fazer uma letra Z na tela. Como ficaria usando um vetor.
Grato.

Fernando Barbosa disse...

Bit Help Informática, sobre isto, veja em matrizes.

clid saniny disse...

Nsa prende theu ku kel pagina li. Muitu brigadu pa kriAdir

Guilherme Bezerra Fernandes disse...

Bit Help Informática, no link a seguir apresento um projeto de Letreiro:
https://aulasguilherme.wordpress.com/2016/03/26/projeto-34-letreiro-3-0-ultra-reduzido/

Gostou desse tutorial de C?
Sabia que o acervo do portal C Progressivo é o mesmo, ou maior que, de um livro ou curso presencial?
E o melhor: totalmente gratuito.

Mas para nosso projeto se manter é preciso divulgação.
Para isso, basta curtir nossa página no Facebook e/ou clicar no botão +1 do Google.
Contamos e precisamos de seu apoio.