Você está na página 1de 6

Linguagem C

(Tipos de Dados Avanados)

Prof. Edson Pedro Ferlin

Modificadores de Tipo
by Prof. Edson Pedro Ferlin

Os modificadores de tipo fazem com que se tenha outros


tipos de dados alm dos cinco bsicos;

So divididos em quatro categorias:


de Acesso;

de Armazenamento;

de Tipo de Funo.

Um modificador de tipo precede o tipo base que ele


modifica no comando de declarao.

Forma Geral: Modificador Tipo_base Lista_de_variveis;

www.professorferlin.blogspot.com 1
Modificadores de Acesso
by Prof. Edson Pedro Ferlin

Const

Faz com que durante a execuo, o programa no possa


alterar uma varivel declarada com este modificador,
exceto pelo fato de que podemos dar varivel um valor
inicial;

Exemplo:

const float versao=3.20;

Evitam que os argumentos de uma funo sejam


modificados por aquela funo.

Modificadores de Acesso
by Prof. Edson Pedro Ferlin

Volatile

Indica que o valor de uma varivel pode ser alterado sem


uma especificao explicita do programa;

Dessa forma, ser examinado o valor da varivel cada vez


que for feita uma referncia a ela;

Exemplo:

int timer;
volatile int clock;

timer = clock;
printf(Tempo decorrido %d, clock-timer);

www.professorferlin.blogspot.com 2
Modificadores Armazenamento
by Prof. Edson Pedro Ferlin

Auto

Usada para declarar variveis locais;

Por default as variveis locais so Auto;

Modificadores Armazenamento
by Prof. Edson Pedro Ferlin

Extern
Diz ao compilador que os tipos e nomes das variveis que se
seguem j foram declarados em um outro lugar;

Deixa o compilador saber quais os tipos e nomes dessas


variveis globais sem realmente criar armazenamento para
elas novamente;

int x, y; extern int x, y;


char ch; extern char ch;
main() func2()
{ {
... x = y/10;
} }
func1() func3()
{ {
x = 123; y = 10;
} }

www.professorferlin.blogspot.com 3
Modificadores Armazenamento
by Prof. Edson Pedro Ferlin

Static

So variveis permanentes dentro de suas prprias


funes ou arquivos;

So diferentes das variveis globais, porque elas no so


conhecidas fora de suas funes ou arquivos, mas
mantm seus valores entre as chamadas;

Locais: uma varivel que retm seu valor entre as


chamadas das funes;

Globais: Possibilidade de criar funes gerais de modo a


incluir em bibliotecas para uso posterior.

Modificadores Armazenamento
by Prof. Edson Pedro Ferlin

Register

Aplica-se apenas a variveis do tipo int e char;

Exige que o compilador mantenha o valor das variveis


declaradas com esse modificador no registrador da CPU, e
no na memria, onde as variveis normais so
armazenadas;

Mais rapidez no processamento;

Ideal no controle de laos.

www.professorferlin.blogspot.com 4
Modificadores Tipo de Funo
by Prof. Edson Pedro Ferlin

Pascal

Informa ao compilador para usar uma conveno de


passagem de parmetros do tipo Pascal para os
argumentos da funo em lugar do mtodo normal do C;

Escrever funes em C que sero usadas por outros


compiladores;

Usar rotinas de biblioteca de um compilador Pascal


declarando-as no incio de seu programa em C como
sendo do tipo Pascal.

Modificadores Tipo de Funo


by Prof. Edson Pedro Ferlin

Cdecl

Informa ao compilador que ele deve compilador uma


funo de forma que seus parmetros sejam passados de
uma maneira compatvel com outras funes de C;

Usa-se quando o compilador est ajustado para compilar


usando a conveno de chamada Pascal.

10

www.professorferlin.blogspot.com 5
Modificadores Tipo de Funo
by Prof. Edson Pedro Ferlin

Interrupt

Informa ao compilador que a funo que ele modifica ser


usado como um controlador de interrupo;

Preserve todos os registradores da CPU;

Saia da funo mediante um IRET (Returno de


Interrupo).

11

Converso de Tipo
by Prof. Edson Pedro Ferlin

Atribuio
Ocorre quando se mistura tipos de dados diferentes;
Regra: converte o valor do lado direito (expresso) do
comando para o tipo do lado esquerdo (objeto);

int x
char ch Quando se
float f; converte de um
func() tipo maior para
{ outro menor,
ch = x; /* 8 bits inferiores */ perde-se os
x = f; /* parte no fracionria */ bits superiores.
f = ch; /* para ponto flutuante */
f = x; /* para ponto flutuante */
}

12

www.professorferlin.blogspot.com 6