Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EP6 2017 - Punteros
EP6 2017 - Punteros
Explicación Práctica 6
CADP 2017
Facultad de Informática - UNLP
Variables estáticas
Se conoce el tamaño máximo que van a
ocupar en memoria.
Supongamos:
Memoria RAM
Char 1 byte
Integer 4 bytes
Real 8 bytes
Pila Boolean 1 byte
o Stack
Variables cantidad de caracteres + 1
String
Registro la suma de lo que ocupa c/ campo
Puntero 4 bytes
c e n a la d ire c ción en
:a a
Variable Puntero ble (llamada variable
lm
varia
memoria de otra
dinámica).
at o s a pu n ta d o s p o r Punteros
Memoria D
Operaciones
• new(pun) Adquiere la memoria necesaria para una variable dinámica. El valor de
pun es la dirección de memoria en donde se guarda el dato del tipo apuntado.
• dispose(pun) Libera la memoria adquirida mediante el new().
El puntero queda con valor indefinido.
• Asignación
- Entre punteros de igual tipo. Ej: Pun:= otropun;
- Asignación de NIL. Ej: Pun:= NIL
• Comparación
- Entre punteros de igual tipo. Ej : if(pun = otropun)then …
- Comparación con NIL. Ej : if(pun <> NIL)then …
Var
al p: BASURA
FFFF
p: punt; ¿Qué ocurre Variables
m pl a za r n ew(p1) por Estáticas
ree {Prog Ppal}
Begin dispose(p1)?
new (p);
El dato queda en
p^ := 23;
memoria pero
suma(p); 24
BASURA
23
es inaccesible Variables
write(p^);
End. IMPRIME 24 Dinámicas
BASURA
Punteros como parámetros
p1 recibe la referencia de p. Si modifico la dirección
Program ejemplo; p1, estoy modificando la dirección de p en el programa
Type ppal.
punt = ^integer;