Armazenamento De Memoria
Ensaios: Armazenamento De Memoria. Pesquise 862.000+ trabalhos acadêmicosPor: 14mauricio14 • 3/11/2014 • 398 Palavras (2 Páginas) • 249 Visualizações
Armazenamento de memoria
Todas as variáveis e funções C tem um tipo de classe de armazenamento. A classe de armazenamento de uma variável determina em qual momento será criada e em qual será destruida (liberada da memória), em quais pontos do programa poderá ser acessada, em que parte da memória será armazenada e qual será seu valor inicial.
São quatro as classes de armazenamento em C:
- Auto, extern, static e register.
A classe auto é usada para especificar uma variável automática, mas não é necessária, visto que a classe auto é padrão.
A classe extern ao contrario das variáveis automáticas, declaradas dentro das funções, as variáveis são declaradas fora de qualquer função. O acesso de uma classe extern é permitido a todas as funções do programa. A palavra extern não é usada para criar variáveis da classe extern e sim para informar ao compilador que a variável em questão foi criada em outro programa.
A classe static se assemelha as classes automáticas, porque são conhecidas somente das funções que as declaram, e por outro, se assemelham as externas, uma vez que mantem seus valores mesmo quando a função termina.
A classe register indica que, se possível, a variável associada deve ser guardada fisicamente numa memoria de acesso mais rápido chamada registrador. Um registrador da maquina é um espaço no qual podemos armazenar um int ou char. Em outras palavras, as variáveis da classe register são semelhantes as automaticas, mas se aplicam apenas as variáveis do tipo int e char.
Exemplo de alocação de memoria:
Código fonte
#include <stdio.h>
#include <stdlib.h>
unsigned randn (void);
void inits (int n);
main()
{
int i;
int s;
printf("digite a sua semente: ");
scanf("%d", & s);
inits(s);
for(i=0; i<5; i++)
printf("%d\n", randn());
system("PAUSE");
return 0;
}
static int semente;
unsigned randn()
{
static unsigned semente = 1;
semente = (semente*25173 + 13849)%65536;
return semente;
}
void inits (int n)
{
semente=n;
}
...