Como verificar a localização de um variável em C Programming
Na programação C, tipo e tamanho de uma variável são descobertos pela primeira vez ao declarar essa variável como um tipo específico, mas também usando a palavra-chave sizeof. A segunda descrição de uma variável, o seu conteúdo, pode ser adquirida através da leitura o valor da variável usando a função da linguagem C apropriado.
A terceira descrição de uma variável é a sua localização na memória. Você recolher esta informação, usando o operador eo p espaço reservado%, como mostrado em O Variável, Wherefore Art Thou?
O VARIÁVEL, Wherefore Art Thou?
# include int main () {char c = 'c'-int i = 123-float f = 98.6-double d = 6.022E23-printf ( "Endereço de' c '% p n", c) -printf ( " endereço do 'i' p n% ", i) -printf (" endereço do 'f'% p n ", f) -printf (" endereço do 'd'% p n ", d) -Retornar ( 0) -}
Quando o operador de prefixos uma variável, ele retorna um valor que representa a variável de endereço, ou a sua localização na memória. Esse valor é expresso em hexadecimal. Para visualizar esse valor, o personagem de conversão p% é utilizado, como mostrado em O Variável, Wherefore Art Thou?
Exercício 1: Digite o código-fonte de O Variável, Wherefore Art Thou? em seu editor. Construir e executar.
Os resultados produzidos pelo programa gerados a partir de um exercício são únicos, não só para cada computador, mas também, potencialmente, para cada vez que o programa é executado.
Endereço do 'c' 0x7fff5fbff8ffAddress de 'i' 0x7fff5fbff8f8Address de 'f' 0x7fff5fbff8f4Address de «d» 0x7fff5fbff8e8
Variável c é armazenado na memória no local 0x7fff5fbff8ff - que é local decimal 140.734.799.804.671. Ambos os valores são triviais, de course- o computador mantém o controle dos locais de memória, o que é muito bem por mim.
Esta ilustração mostra como os endereços de mapear na memória.
elementos da matriz individuais têm posições de memória, bem como, como mostrado em locais de memória em uma matriz na linha 10. O operador de prefixos a variável elemento específico, tosse com um endereço. O caractere de conversão% p na função printf () exibe o endereço.
Locais de memória em um array
#include int main () {char Olá [] = "Olá!" - int i = 0-while (Olá [i]) {printf ( "% c em% p n", Olá [i], Olá [i ]) - i ++ -} return (0) -}
exercício 2: Criar um novo projeto usando o código-fonte mostrado em locais de memória em uma matriz. Construir e executar.
Mais uma vez, a produção local de memória é único em cada computador.
H a 0x7fff5fbff8f0e em 0x7fff5fbff8f1l em 0x7fff5fbff8f2l em 0x7fff5fbff8f3o em 0x7fff5fbff8f4! em 0x7fff5fbff8f5
Ao contrário do exemplo de um exercício, os endereços gerados pelo exercício 2 são contíguas na memória, um byte após o outro.
exercício 3: Codificar um programa para exibir cinco valores em uma matriz int junto com o endereço de memória de cada elemento. Você pode usar locais de memória em uma matriz para inspirá-lo, embora um loop pode ser mais fácil de código.
By the way, o memória operador local deve ser familiar para você. Ele é usado pela função scanf (), que requer o endereço de uma variável, e não a própria variável. Isso porque scanf () coloca um valor em um local de memória diretamente. Como? Usando ponteiros, é claro!
o operador é também o bit a bit E operadora no entanto, o compilador é inteligente o suficiente para saber quando prefixos uma variável e quando faz parte de uma equação matemática binária.