Baixe o app para aproveitar ainda mais
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
Compartilhar