Vídeo: Programar em C - Manipulação de Arquivos txt em C / Escrever Dados - Aula 81 2024
Na programação C, o tipo e o tamanho de uma variável são descobertos primeiro, declarando essa variável como um tipo específico, mas também usando a palavra-chave sizeof. A segunda descrição de uma variável, seu conteúdo, pode ser obtida através da leitura do valor da variável usando a função de linguagem C apropriada.
A terceira descrição de uma variável é a sua localização na memória. Você coleciona essa informação usando o operador & eo marcador de posição% p, conforme mostrado em O Variable, por que você é Art Thou?
O VARIABLE, WHEREFORE ART THOU?
#include int main () {char c = 'c'; int i = 123; flutuação f = 98. 6; duplo d = 6. 022E23; printf ("Endereço de 'c'% pn", & c); printf ("Endereço de 'i'% pn", & i); printf ("Endereço de 'f'% pn", & f); printf ("Endereço de 'd'% pn", & d); return (0);}
Quando o operador prefixa uma variável, ele retorna um valor que representa o endereço da variável, ou a sua localização na memória. Esse valor é expresso em hexadecimal. Para ver esse valor, o caractere de conversão% p é usado, como mostrado em O Variable, por que Art Thou?
Exercício 1 : Digite o código fonte de O Variable, por que você é Art Thou? no seu editor. Construa e execute.
Os resultados produzidos pelo programa gerado a partir do Exercício 1 são únicos, não apenas para cada computador, mas também, potencialmente, para cada vez que o programa é executado.
Endereço de 'c' 0x7fff5fbff8ff Endereço de 'i' 0x7fff5fbff8f8 Endereço de 'f' 0x7fff5fbff8f4 Endereço de 'd' 0x7fff5fbff8e8
Variável c é armazenado na memória na localização 0x7fff5fbff8ff - é a localização decimal 140, 734, 799, 804, 671. Ambos os valores são triviais, é claro; o computador faz um registro dos locais de memória, o que está muito bem por mim.
Esta ilustração mostra como esses endereços mapeiam na memória.
Os elementos de matriz individuais também possuem locais de memória, como mostrado em Localizações de memória em uma matriz na linha 10. O operador e prefixa a variável de elemento específico, tossindo um endereço. O caractere de conversão% p na função printf () exibe o endereço.
LOCAÇÕES DE MEMÓRIA EM UM ARRIL
#include int main () {char hello [] = "Hello!"; int i = 0; enquanto (hello [i]) {printf ("% c at% pn", olá [i], & hello [i]); i ++;} return (0);}
Exercício 2 : Crie um novo projeto usando o código-fonte mostrado em Locais de memória em uma matriz. Construa e execute.
Novamente, a saída da localização da memória é única em cada computador.
H a 0x7fff5fbff8f0 e a 0x7fff5fbff8f1 l a 0x7fff5fbff8f2 l a 0x7fff5fbff8f3 o a 0x7fff5fbff8f4!em 0x7fff5fbff8f5
Ao contrário do exemplo do Exercício 1, os endereços gerados pelo Exercício 2 são contíguos na memória, um byte após o outro.
Exercício 3 : Codifique um programa para exibir cinco valores em uma matriz int juntamente com o endereço de memória de cada elemento. Você pode usar Localizações de memória em uma matriz para inspirar você, embora um loop for possa ser mais fácil de codificar.
-
Por sinal, o operador de localização da memória e você deve estar familiarizado com você. É 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? Ao usar ponteiros, é claro!
-
O operador & também é o operador AND bit a bit; no entanto, o compilador é inteligente o suficiente para dizer quando e prefixa uma variável e quando é e faz parte de uma equação matemática binária.