Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luan Pedro

Endereço de memoria

Recommended Posts

oláá pessoal......

 

respondam a minha duvida ..>!

 

A questao é a seguinte situação de exemplo .

 

sabeno que um int usa 2 bytes de memória....

 

suponhamos o programa

 

int a[20], b[20];
    int i;
    for(i=0;i<20;i++)
    {
                     cout<<&a[i]<<" "<<&b[i]<<"\n";
    }
esse algoritimo me informa valores do tipo :a[0] = 0x22ff20 , a[1] = 0x22ff24 , e por ai vai...

 

Perceba que o ultimo numero ta aumentano de 4 em 4 ...e nao de dois em dois !e se eu por exemplo trocar o tipo dele de int para float ,ele continua aumentano na mesma proporçao,e nao de 8 em 8 bytes !!! o que eu estou compriendendo errado ??? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
	char a[2];
	short b[2];
	int c[2];
	double d[2];

	cout << (int)&a[2]-(int)&a[1] << endl //acontece que isso não é necessário,
             << (int)&b[2]-(int)&b[1] << endl //basta usar sizeof()
	     << (int)&c[2]-(int)&c[1] << endl //i.e: sizeof(int). 
	     << (int)&d[2]-(int)&d[1] << endl;//boa sorte  ;) 
 
	cin.get();
	return 0;
}

Saída:

1
2
4
8

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.