perigoso pois voce esta lendo uma regiao da memoria, que foi"gravada" como um inteiro, como se fosse um ponto flutuante. Tome cuidado! O resultadopode nao fazer sentido.106EnumeracoesNuma enumeracao podemos dizer ao compilador quais os valores que uma determinadavariavel pode assumir. Sua forma geral e:enum nome_do_tipo_da_enumeracao {lista_de_valores} lista_de_variaveis;Vamos considerar o seguinte exemplo:enum dias_da_semana {segunda, terca, quarta, quinta, sexta,sabado, domingo};O programador diz ao compilador que qualquer variavel do tipo dias_da_semana sopode ter os valores enumerados. Isto quer dizer que poderiamos fazer o seguinte programa:#include <stdio.h>enum dias_da_semana {segunda, terca, quarta, quinta, sexta,sabado, domingo};main (void){enum dias_da_semana d1,d2;d1=segunda;d2=sexta;if (d1==d2){printf ("O dia e o mesmo.");}else{printf ("Sao dias diferentes.");}return 0;}Voce deve estar se perguntando como e que a enumeracao funciona. Simples. Ocompilador pega a lista que voce fez de valores e associa, a cada um, um numero inteiro.Entao, ao primeiro da lista, e associado o numero zero, o segundo ao numero 1 e assim pordiante. As variaveis declaradas sao entao variaveis int.O Comando sizeofO operador sizeof e usado para se saber o tamanho de variaveis ou de tipos. Ele retornao tamanho do tipo ou variavel em bytes. Devemos usa-lo para garantir portabilidade. Porexemplo, o tamanho de um inteiro pode depender do sistema para o qual se esta compilando.O sizeof e um operador porque ele e substituido pelo tamanho do tipo ou variavel nomomento da compilacao. Ele nao e uma funcao. O sizeof admite duas formas:sizeof nome_da_variavelsizeof (nome_do_tipo)Se quisermos entao saber o tamanho de um float fazemos sizeof(float). Sedeclararmos a variavel f como float e quisermos saber o seu tamanho faremos sizeof f. Ooperador sizeof tambem funciona com estruturas, unioes e enumeracoes.Outra aplicacao importante do operador sizeof e para se saber o tamanho de tiposdefinidos pelo usuario. Seria, por exemplo, uma tarefa um tanto complicada a de alocar a107memoria para um ponteiro para a estrutura ficha_pessoal, criada na primeira pagina destaaula, se nao fosse o uso de sizeof. Veja o exemplo:#include <stdio.h>struct tipo_endereco{char rua [50];int numero;char bairro [20];char cidade [30];char sigla_estado [3];long int CEP;};struct ficha_pessoal{char nome [50];long int telefone;struct tipo_endereco endereco;};void main(void){struct ficha_pessoal *ex;ex = (struct ficha_pessoal *) malloc(sizeof(struct ficha_pessoal));...free(ex);}O Comando typedefO comando typedef permite ao programador definir um novo nome para umdeterminado tipo. Sua forma geral e:typedef antigo_nome novo_nome;Como exemplo vamos dar o nome de inteiro para o tipo int:typedef int inteiro;Agora podemos declarar o tipo inteiro.O comando typedef tambem pode ser utilizado para dar nome a tipos complexos, comoas estruturas. As estruturas criadas no exemplo da pagina anterior poderiam ser definidascomo tipos atraves do comando typedef. O exemplo ficaria:#include <stdio.h>typedef struct tipo_endereco{char rua [50];int numero;char bairro [20];char cidade [30];char sigla_estado [3];long int CEP;} TEndereco;108typedef struct ficha_pessoal{char nome [50];long int telefone;TEndereco endereco;}TFicha;void main(void){TFicha *ex;...}Veja que nao e mais necessario usar a palavra chave struct para declarar variaveis dotipo ficha pessoal. Basta agora usar o novo tipo definido TFicha.Uma aplicacao de structs: as listas simplesmente encadeadasVarias estruturas de dados complexas podem ser criadas utilizando simultaneamentestructs e ponteiros. Uma destas estruturas e a lista encadeada. Uma lista encadeada e umasequencia de structs, que sao os nos da lista, ligados entre si atraves de ponteiros. Estasequencia pode ser acessada atraves de um