Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
typedef struct nolista {
int dado;
int d;
struct nolista *prox;
}no;
feito essa estrutura para lista encadeada eu criei uma função para localizar o endereço de memoria de cada variável criada.
void funcao() {
struct nolista d;
struct nolista d1;
struct nolista d2;
struct nolista d3;
struct nolista d4;
printf("%p", &d);
printf("\n%p", &d1);
printf("\n%p", &d2);
printf("\n%p", &d3);
printf("\n%p", &d4);
}
o resultado foi o seguinte:
0022FF30
0022FF20
0022FF10
0022FF00
0022FEF0
A minha duvida: Se eu declarar 2 inteiros, e cada inteiro tem 4 bytes vai ser a mesma coisa que se eu declarar 3 inteiros. No total vai ficar 16 bytes.
4 bytes de um inteiro + 4 bytes de outro inteiro + um ponteiro da estrutura 4+4=8, no final, fica: 4+4+8=16.
Sabendo que um inteiro pode ser também 2 bytes, então ele divide 2 bytes para cada inteiro? tipo se eu declarar 3 inteiros na estrutura.
typedef struct nolista {
int dado;
int d;
int o;
struct nolista *prox;
}no;
4 bytes de um inteiro + 2 bytes de outro inteiro + 2 bytes de outro inteiro + um ponteiro da estrutura 4+2+2=8, no final, fica: 4+2+2+8=16. Eu acho que ele faz isso automaticamente para economizar a memoria.
Alguém pode me explicar como funciona isso? E porque os endereços esta na ordem decrescente?
Obrigado
Carregando comentários...