É muito comum nos curso de computação ouvir ou ao menos ver os conceitos de estrutura de dados e o uso de ponteiros, programar é algo simples todos podemos compor algoritmos de modo a resolver um problema proposto por um professor em sala de aula. Porem programar se torna complexo quando precisamos de desempenho e qualidade na produção de um sistema ou programa, daí entramos na noção de dados estruturados e naturalmente perdemos a ilusão de que sabemos programar pois existem soluções matemáticas mais eficientes e eficazes para compor algo que fazíamos de modo bruto devido a falta de conhecimento, meu breve objetivo é falar de uma noção básica em estrutura de dados, ou seja ponteiros ,vou adotar a mesma literatura usada por alguns professores da UFS que segue a seguir, a linguagem adotada é o pascal, se trata de uma linguagem simples e fácil :
Apontadores (Ponteiros)
Um apontador é uma variável que contém o endereço de um dado ou de um código de programa. Podemos obter o endereço de uma variável usando a função Addr ou o operador @.
- A função Addr(<variável>)
- O operador @<variável>
Exemplo 1: Obtendo o endereço de uma variável integer:var N : integer;
begin
writeln('Addr(N)=', longint(Addr(N)));
writeln('@N=', longint(@N))
end.
begin
writeln('Addr(N)=', longint(Addr(N)));
writeln('@N=', longint(@N))
end.
Variável tipo Pointer
Usa-se uma variável tipo Pointer para armazenar um endereço de memória.
var <nome-da-variável> : Pointer;
Este tipo de apontador pode ser usado para guardar o endereço de qualquer variável, independente do tipo da mesma.
Exemplo 2: Atribuindo endereços de variáveis a um apontador:var
N : integer;
R : real;
S : String[50];
P : Pointer;
begin
P := Addr(N); {1}
writeln('Addr(N)=', longint(P));
P := Addr(R); {2}
writeln('Addr(R)=', longint(P));
P := @S; {3}
writeln('Addr(S)=', longint(P));
P := @P; {4}
writeln('Addr(P)=', longint(P));
end.
N : integer;
R : real;
S : String[50];
P : Pointer;
begin
P := Addr(N); {1}
writeln('Addr(N)=', longint(P));
P := Addr(R); {2}
writeln('Addr(R)=', longint(P));
P := @S; {3}
writeln('Addr(S)=', longint(P));
P := @P; {4}
writeln('Addr(P)=', longint(P));
end.
desse modo dispomos de uma noção básica de ponteiros, em breve vamos conversar um pouco sobre alocação dinâmica de memoria e suas vantagens e desvantagens,quaisquer dúvidas perguntem o blog serve para isso.
Fonte :http://albertocn.sytes.net/2010-2/ed1/aulas/apontadores.htm
Nenhum comentário:
Postar um comentário