pascal ponteiros
TRANSCRIPT
- 1. PASCAL
-
- Regis Pires Magalhes
-
-
- ltima atualizao em 05/09/2007
Alocao Dinmica Ponteiros 2. Alocao dinmica
- Usada sempre que no se sabe exatamente quanto de memria ser usado para uma determinada tarefa.
- Assim, reserva-se espao da memria disponvel (HEAP) medida que mais memria torna-se necessria.
- Tambm pode-se liberar posies de memria quando no forem mais necessrias.
- A memria alocada no no incio do programa, mas sim no decorrer de sua utilizao do sistema.
- como se pudssemos definir um ARRAY com o seu tamanho sendo alterado medida que fosse necessrio.
3. Exemplo
- program usa_ponteiros;
- Uses Crt;
- var pInt : ^integer;
- begin
- ClrScr;
- New(pInt);
- pInt^ := 10;
- Writeln('pInt^: ', pInt^);
- Dispose(pInt);
- Readkey;
- end.
4. 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.
5. 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.
6. Lista Encadeada Simples 7. Lista Encadeada Simples 8. 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.