A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modificadores de tipos e Arquivos

Apresentações semelhantes


Apresentação em tema: "Modificadores de tipos e Arquivos"— Transcrição da apresentação:

1 Modificadores de tipos e Arquivos
Curso de aprofundamento na linguagem C

2 Visibilidade e acesso Modificadores de tipos Classes de armazenamento
Modo de acesso Tempo de vida Espaço de endereçamento Classes de armazenamento Qualificadores de tipos

3 Classes de armazenamento
Automatic (auto) Static Register Typedef Extern

4 Automatic Variáveis de escopo local Armazenamento na pilha
Tipo default

5 Static Espaço de endereçamento estático Variáveis globais
Pode ser acessado a qualquer momento no programa Variáveis globais Modifica a classe de armazenamento Restrição de visualização

6 Static Pode ser aplicado a variáveis locais
Variáveis locais com armazenamento estático transformam-se em variáveis globais com visibilidade local

7 Static Pode ser aplicado a funções e variáveis globais
Restringe a visualização ao arquivo fonte (.c)

8 Extern Classe de armazenamento externa
Endereços desconhecidos em tempo de compilação Resolvidas em tempo de link Declaração de globais inicializadas externamente Pode ser utilizado em funções

9 Register Variáveis com armazenamento em registradores
Armazenamento sugerido Utilizada para otimizar laços Máquinas RISC Desuso por otimização

10 typedef Não é considerado um modificador de classe de armazenamento nos compiladores modernos Alias para tipos Declarações menores Aumento de portabilidade entre sistemas

11 Qualificadores de tipo
Influem no modo de acesso Restrições de modificação const Restrições de otimização volatile

12 const Restringe a modificação de variáveis com este qualificador
Não podem sofrer atualização Regra diferente para ponteiros Inicialização junto com definição Garantia pelo compilador que o conteúdo da variável não vai ser modificado

13 const Área de memória read-only
Modificação forçada leva a um comportamento indefinido Pode ser aplicado a structs e unions Pode ser burlado e gerar erros de execução Ver apostila

14 volatile Restrição de otimização do compilador
Variáveis que podem ser acessadas e modificadas por processos concorrentes Acesso a IO mapeado em memória

15 volatile struct devregs{ /* control & status */ unsigned short csr;
/* data port */ unsigned short data; }; /* bit patterns in the csr */ #define ERROR 0x1 #define READY 0x2 #define RESET 0x4 /* absolute address of the device */ #define DEVADDR ((struct devregs *)0xffff0004) /* number of such devices in system */ #define NDEVS 4 /* * Busy-wait function to read a byte from * device n. * check range of device number. * Wait until READY or ERROR * if no error, read byte, return it * otherwise reset error, return 0xffff */ unsigned int read_dev(unsigned devno){ struct devregs *dvp = DEVADDR + devno; if(devno >= NDEVS) return(0xffff); while((dvp->csr & (READY | ERROR)) == 0) ; /* NULL - wait till done */ if(dvp->csr & ERROR){ dvp->csr = RESET; } return((dvp->data) & 0xff);

16 volatile Memória de hardware mapeada em struct struct devregs{
unsigned short volatile csr; unsigned short const volatile data; }; volatile struct devregs{ unsigned short csr; unsigned short const data; } *device; struct devregs{ unsigned short csr; unsigned short const data; }; volatile struct devregs *device;

17 E/S baseada em arquivos
Streams <stdio.h> Streams default stdin stdout stderr

18 Operações com Arquivos
Abertura/criação Arquivos texto Arquivos binários Leitura e Escrita Byte a byte Blocos Formatada Acesso randômico/seqüencial

19 Abertura Modo Retorna NULL se falhar R leitura W escrita
FILE *fopen(char *name, char *mode); Modo R leitura W escrita A Concatenação B binário T texto (default) Retorna NULL se falhar Checagem recomendada

20 Leitura e Escrita int fgetc(FILE *stream);
int fputc(char c, FILE *stream); Char *fgets(char *s, int size, FILE *stream); Int ungetc(int c, FILE*stream); Int fputs(const char *s, FILE *stream);

21 Leitura e Escrita int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);

22 Leitura e Escrita size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); int feof(FILE *stream);

23 Acesso randômico int fseek(FILE *stream, long offset, int whence);
SEEK_SET SEEK_END SEEK_CUR long ftell(FILE *stream); void rewind(FILE *stream);

24 Exercício Escrever um array de estruturas diretamente no arquivo e depois recuperá-lo e imprimir na tela


Carregar ppt "Modificadores de tipos e Arquivos"

Apresentações semelhantes


Anúncios Google