program exPointers; var num1: integer; ponteiro: ^integer; y:^word; begin num1 := 100; writeln('a) Valor de num1: ', num1); ponteiro := @num1; // indica o endereço de memória ao pointer onde está guardado o valor de num1 writeln('b) VALOR - Por intermédio do PONTEIRO -- O valor de num1 : ', ponteiro^); // imprime o valor que está dentro do endereço de memória writeln('c) ENDEREÇO - Por intermédio do PONTEIRO -- Endereço de memória (hexadecimal) onde está guardado num1 e para onde o ponteiro aponta: ', ponteiro); // imprime o endereço de memória para o qual o ponteiro está a apontar writeln('d) ENDEREÇO - Por intermédio da VARIÁVEL num1 -- Endereço de memória (hexadecimal) onde está guardado num1: ', @num1); // imprime o endereço de num1 - deve ser igual ao endereço para o qual o ponteiro aponta y:=@ponteiro; // atribui a y o valor do endereço de memória, que pelo seu tipo de dado o consegue imprimir em formato decimal writeln('e) ENDEREÇO - Por intermédio da VARIÁVEL y -- Endereço de memória (decimal) ', y^); // imprime o endereço de memória para o qual o ponteiro está a apontar em formato decimal if ponteiro = @num1 then begin writeln('O endereço hexadecimal de c) coincide com o de d) ', ponteiro, ' = ', @num1 ); writeln('Faça os cálculos que lhe permitam identificar se ',y^,' (decimal) corresponde a ',ponteiro,' (Hexadecimal)'); end else writeln('O endereço hexadecimal de c) NÃO coincide com o de d) ', ponteiro, ' <> ', @num1, ' Algo está errado' ); end.