Como toda casa possui um endereço (Rua, número, bairro, cidade, estado, país, CEP), a memória possui um endereçamento, muito mais simplificado, composto por números.
Esses números indexam a memória byte-a-byte.
Vamos recorrer ao exemplo abaixo para compreender melhor:
Endereço | 2048 | 2049 | 2050 |
Identificador | sexo | anoNascimento | |
Valor | 'F' | 1982 |
O exemplo representa um fragmento de memória, na qual estão presentes duas variáveis identificadas por sexo e anoNascimento. Pelo número de bytes alocados para cada variável e, com o auxílio da tabela de limites mínimos de variáveis, pode-se concluir que sexo é do tipo char e anoNascimento é inteiro.
Quando pergunto qual o endereço de sexo, a resposta deve ser 2048. Quando pergunto qual o endereço de anoNascimento, a dúvida impera!
Alguns respondem 2049, outros 2050, um grupo isolado arrisca 2049 e 2050. A resposta correta é 2049. O endereço de uma variável que ocupa mais de um byte é o menor endereço do bloco de memória ocupado pela variável. O bloco ocupado por anoNascimento é 2049-2050, portanto o menor endereço desse bloco é 2049.
Na linguagem C a forma utilizada para descobrir o endereço de uma variável é por meio do operador &.
O programa abaixo ilustra como se utiliza o operador & para imprimir na tela o endereço de uma variável.
001: #include <stdio.h>
002: #include <stdlib.h>
003:
004: int main(int argc, char *argv[])
005: {
006: char sexo = 'F';
007: int anoNascimento = 1982;
008:
009: printf("O endereco de sexo e %p\n", &sexo);
010: printf("O endereco de anoNascimento e %p\n", &anoNascimento);
011: system("PAUSE");
012: return 0;
013: }
Com base no fragmento de memória apresentado anteriormente, a saída esperada para esse programa é:
O endereço de sexo e 2048
O endereço de anoNascimento e 2049
Você deve estar se perguntando... Quando usarei esse operador?
Primeiramente na função scanf, utilizada na leitura de dados do teclado, e mais a frente em passagem de parâmetros por referência (o que é feito na função scanf) e no uso de ponteiros.
A propósito, a passagem de parâmetro por referência é feita utilizando ponteiros. :D
3 comentários:
Comecei a aprender c a pouco tempo e seu blog esta me ajudando muito.Por favo continue seu trabalho e muito obrigado!
Muito bom seu blog!!!estou começando agora em C!!!e seu blog está ajudando muito!!!Parabéns!!!e continue com seu trabalho!!!
gostei do seu blog estou a comesar a progamar agora e espero que esse meu pequeno comentario te encoraja a chegar mais longe
Postar um comentário