Ir ao conteúdo

Posts recomendados

Postado

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
Postado
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.

 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!