Buscar

Pascal Ponteiros

Prévia do material em texto

http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
PASCAL
Regis Pires Magalhães
Última atualização em 05/09/2007
Alocação Dinâmica
Ponteiros
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Alocação dinâmica
 Usada sempre que não se sabe exatamente quanto de 
memória será usado para uma determinada tarefa.
 Assim, reserva-se espaço da memória disponível 
(HEAP) à medida que mais memória torna-se 
necessária. 
 Também pode-se liberar posições de memória quando 
não forem mais necessárias.
 A memória é alocada não no início do programa, mas 
sim no decorrer de sua utilização do sistema.
 É como se pudéssemos definir um ARRAY com o seu 
tamanho sendo alterado à medida que fosse 
necessário. 
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Exemplo
program usa_ponteiros;
Uses Crt;
var pInt : ^integer;
begin
 ClrScr;
 New(pInt);
 pInt^ := 10;
 Writeln('pInt^: ', pInt^);
 Dispose(pInt);
 Readkey;
end.
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Exemplo
program usa_sem_ponteiro;
Uses Crt;
var a, b : integer;
begin
 ClrScr;
 b := a;
 b := 10;
 Writeln('a: ', a);
 Writeln('b: ', b);
 a := 20;
 Writeln('a: ', a);
 Writeln('b: ', b);
 Readkey;
end.
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Exemplo
program usa_ponteiros2;
Uses Crt;
var pA, pB : ^integer;
begin
 ClrScr;
 new(pA);
 pB := pA;
 pB^ := 10;
 Writeln('pA^: ', pA^);
 Writeln('pB^: ', pB^);
 pA^ := 20;
 Writeln('pA^: ', pA^);
 Writeln('pB^: ', pB^);
 Dispose(pA);
 Readkey;
end.
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Lista Encadeada Simples
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Lista Encadeada Simples
 
http://regispiresmag.googlepages.com/cefetregispiresmag@gmail.com
Lista Encadeada Simples
program nomes;
uses crt;
type tpRegistro = ^registro;
 registro = Record
 nome : String;
 proximo : tpRegistro;
 end;
var pAtual, pInicio, pAnterior : tpRegistro;
 mais : char;
begin
 clrscr;
 repeat
 write('Digite um nome: ');
 new(pAtual);
 readln(pAtual^.nome);
 if pInicio = NIL then
 pInicio := pAtual;
 if pAnterior <> NIL then
 pAnterior^.proximo := pAtual;
 pAnterior := pAtual;
 write('Insere mais (S/N)? ');
 mais := upcase(readkey); writeln;
 until mais = 'N';
 pAtual := pInicio;
 while pAtual <> NIL do
 begin
 writeln('Nome: ', pAtual^.nome);
 pAtual := pAtual^.proximo;
 end;
 readkey;
end.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8

Outros materiais