Agregados


Os tipos agregados classificam-se como homogêneos e heterogêneos.

Homogêneos

Conjunto de elementos de mesmo tipo que podem ser acessados por um subscrito (índice). Podem possuir uma dimensão (vetores) ou mais de uma (matrizes).

Declaração:

< tipo_variável > < nome_variável > [< no.elementos >]

Ex: float notas [10]; int codigo [10] [2];
  • O primeiro elemento do vetor é sempre o de índice zero.

  • Caso o vetor possua 10 elementos, seus índices irão de 0 a 9, cabendo ao programador garantir que o número de elementos não seja ultrapassado.

  • Uma cadeia de caracteres (string) é declarada utilizando-se o mesmo mecanismo de declaração de qualquer vetor . De acordo com a definição da linguagem, as cadeias de caracteres terminam sempre por um caracter nulo, representado por "\0". Por isto, o número de elementos da string deve incluir um espaço a mais para armazenar este caracter nulo.

    Heterogêneos

    Conjunto de elementos que podem ser de mesmo tipo existente, inclusive outros agregados (structs, unions, vetores,...),

    Struct

    Funciona como o registro que já conhecemos. A variável é composta de vários elementos, que podem ser de tipos diferentes e ela possui espaço reservado na memória para armazenar os valores de todos os seus elementos simultâneamente.

    Ex. struct empregado
    { int matricula;
    float salario;
    char nome[31];
    };

    Union

    Uma variável do tipo union, apesar de possuir declaração semelhante a struct (basta substituir struct por union) sua finalidade é é declarar uma variável que ora pode assumir um valor de um tipo ora de outro. Seu objetivo é a economia de memória.

    Ex. union pessoa
    {
    char CPF[12];
    char CGC [20];
    };

    Neste caso, uma variável do tipo pessoa pode ser física ou jurídica. Se for pessoa física será armazenado o valor do CPF. Se for jurídica será armazenado o valor do CGC.Este espaço de memória deve ser suficiente apra armazenar o valor do CPF ou o valor do CGC, então o tamanho da union sempre será igual ao tamanho do seu melhor elemento. A linguagem não possui nenhum controle interno que permita saber em um determinado momento se o valor armazenado é o CPF ou CGC . Este controle é de responsabilidade do programador.

    POdemos criar tipos usando a palavra typedef antes da palavra struct.Assim podemos declarar variáveis do tipo criado. Ex: typedef struct
    { int x;
    float y;
    }Tteste;

    Tteste var1, var2;