Ir ao conteúdo
  • Cadastre-se

C Espaço de memória ocupado por int em array


Cohiba

Posts recomendados

Estou com uma duvida quanto ao espaço de memoria ocupado por um elemento (int) não ser superior em 4 unidades em relação ao anterior, porque até onde eu sei cada int ocupa 4 bytes na memória. quando eu compilo esse código o ultimo elemento ocupa apenas 1 unidade de memória a mais ao anterior.

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <stdint.h>

void main(){

int d[3];

    d[0] = 'D';
    d[1] = 'E';
    d[2] = 'F';

    printf("O elemento [0] de d: %d\n", d[0]);   
    printf("O elemento [1] de d: %d\n", d[1]);   
    printf("O elemento [2] de d: %d\n", d[2]);   

    printf("O endereço do array d em memoria: %p\n", d);
    printf("O endereço do array d em memoria: %p\n", &d);
    printf("O endereço do primeiro elemento do array d em memoria: %p\n", &d[0]);

    printf("O endereço do segundo elemento do array d em memoria: %p\n", d[1]);
    printf("O endereço do terceiro elemento do array d em memoria: %p\n", d[2]); /* O endereço desse não deveria ser 4 unidades maior que o endereço anterior ? afinal cada int ocupa 4 bytes. */


system("pause");
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

#include <stdint.h>

void main(){

int d[3];

    d[0] = 'D';
    d[1] = 'E';
    d[2] = 'F';

    printf("O elemento [0] de d: %d\n", d[0]);   
    printf("O elemento [1] de d: %d\n", d[1]);   
    printf("O elemento [2] de %d\n", d[2]);   

    printf("O endereço do array d em memoria: %p\n", d);
    printf("O endereço do array d em memoria: %p\n", &d);
    printf("O endereço do primeiro elemento do array d em memoria: %d\n", &d[0]);

    printf("O endereço do segundo elemento do array d em memoria: %d\n", &d[1]);
    printf("O endereço do terceiro elemento do array d em memoria: %d\n", &d[2]); /* O endereço desse não deveria ser 4 unidades maior que o endereço anterior ? afinal cada int ocupa 4 bytes. */


system("pause");
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 horas atrás, Cohiba disse:

quando eu compilo esse código o ultimo elemento ocupa apenas 1 unidade de memória a mais ao anterior

 

Isso não acontece quando você compila o seu programa e sim quando você executa o programa. Se você o levar paa outra máquina e rodar lá vai dar na mesma.

 

Em seu programa

 

echo.png.009ba76b579299b305e5a44604e59e47.png

 

Em linhas consecutivas você escreveu coisas diferentes então deve ter um resultado para a primeira linha e outro para as seguintes.

 

É mais importante saber o porque do 1: C usa aritmética de ponteiros então a diferença entre elementos consecutivos do array d é 1.

 

O que você queria era a diferença em bytes entre cada elemento e essa é (1 * sizeof(int)) e vai depender de sua máquina. Em geral 4 bytes.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!