Está en la página 1de 6

Pseudocódigo

Puntero o apuntador
1

AGENDA
 Pseudocódigo

 Puntero
 Declaración
 Operadores
 Operaciones con punteros
 Punteros a punteros
 Gestión de memoria dinámica
 Operador new y delete
 Ejemplo 1
 Ejemplo 2
 Ejercicios

PUNTERO O APUNTADOR (POINTER)


 Un puntero es una variable que tiene la dirección
de memoria de otra variable (la que contiene un
valor).

1
PUNTERO O APUNTADOR (POINTER)
 Si una variable contiene la dirección de otra
variable entonces se dice que: “la primera variable
apunta a la segunda”.

 El identificador cont hace


referencia directa a la variable
cuyo valor es 23.
 El identificador punt hace
referencia indirecta a la
variable (cont) cuyo valor es
23.
4

DECLARACIÓN
Sintaxis : tipo *identificador
 Declara si una variable contiene una dirección de
memoria. Donde tipo puede ser cualquier tipo base,
y éste define a que tipo de variable puede apuntar el
puntero.
 Ejemplo : Entero *punt, k
 Esta sentencia declara que punt apunta a un valor u
objeto de tipo entero. Al declarar una variable como
puntero, debe ir precedida por un *.
 Los punteros se deben inicializar a 0, NULL o a una
dirección, al declararlos o mediante una asignación. 5

OPERADORES
 & : Operador de dirección, devuelve la dirección
de memoria de su operando (variable a la que
precede).

punt  &cont
 Coloca la dirección de memoria 3500 de la variable
cont en punt y la variable puntero punt está ubicada
en la dirección 4000. Se lee que “punt recibe la
dirección del valor cont” o “punt apunta a 6
cont”.

2
OPERADORES
 * : Operador de indirección, es el complemento
de &, devuelve el valor de la variable situada en la
dirección que sigue (sinónimo de la variable hacia
el que apunta su operando).
valt  *punt
 Si punt contiene la dirección de memoria de la
variable cont, entonces coloca el valor de cont en
valt.
 Se lee como “valt recibe el valor contenido en la
variable apuntada por punt” (en ejemplo anterior
es cont).
7

OPERACIONES CON PUNTEROS


 Se pueden incrementar o disminuir punteros. Por
ejemplo: si y es puntero a un Real con la dirección
actual 3500.
 Después de la expresión: yy+1, la dirección de y
será 3504 y no 3501.

 Cada vez que se incrementa y, la computadora 8

apuntará al siguiente flotante, que usa cuatro bytes.

OPERACIONES CON PUNTEROS


 Se puede usar un puntero en la parte derecha de
una sentencia de asignación para asignar el valor
del puntero a otro puntero. Ejemplo:
Entero t, *x, *y
t  450 x &t y  x
 No se puede multiplicar o dividir punteros, no se
puede sumar o restar dos punteros y no se puede
sumar o restar los tipos reales a punteros.

3
PUNTEROS A PUNTEROS
 Sintaxis : tipo **identificador
 Declara un puntero a un puntero, es decir efectúa
un direccionamiento indirecto múltiple o una
cadena de punteros.
 Ejemplo : Real **dobleDir
 Esta declaración le dice al compilador que dobleDir
es un puntero a un puntero tipo Real, y que no es
un puntero a un número en punto flotante.

10

GESTIÓN DE MEMORIA DINÁMICA


 Hay ocasiones en las que no sabemos cuánta
memoria vamos a necesitar hasta que no se
ejecuta el programa.
 Los lenguajes (C++) permiten poder reservar
memoria según se va necesitando, es decir, en
tiempo de ejecución.
 Ventaja de utilizar memoria dinámica:
 Los programas aprovecharán mejor la memoria del
ordenador en el que se ejecuten, usando sólo lo
necesario.

11

OPERADOR NEW
 Por ejemplo en C++ hay 2 operadores para la
gestión de memoria:
 new permite reservar memoria cuando se
requiere y devuelve la dirección de inicio.
identificadorPuntero  new tipo
En C++ identificadorPuntero = new tipo;

Entero *pNULL int *p=NULL;


pnew Entero p=new int;
 .
12

4
OPERADOR DELETE
delete permite liberar memoria si ya no se
necesita.
delete identificadorPuntero
En C++ delete identificadorPuntero;

Entero *pNULL int *p=NULL;


pnew Entero p=new int;
delete p delete p;

13

EJEMPLO 1

Entero nota
Entero *p
leer(nota)
p&nota
escribir(*p)

14

EJEMPLO 2

Entero *p
pnew Entero
leer(*p)
escribir(*p)
delete p

15

5
EJERCICIOS
 Escriba pseudocódigo que permita ingresar 2
números, luego debe sumarlos y finalmente
mostrarlos.
 Desarrolle la solución de dos formas
 Usando punteros y variables
 Usando new y delete

16

RESÚMEN
 Un puntero es una variable que puede almacenar
una dirección de memoria.
 El operador de dirección &, se utiliza para obtener
la dirección de memoria de una variable.
 El símbolo * se utiliza para declarar una variable de
tipo puntero.
 El operador de indirección * se utiliza para acceder
al valor apuntado por un puntero. Se llama de
indirección, porque se accede de manera indirecta
al valor almacenado en una dirección de memoria.
 Para gestionar memoria de forma dinámica se
17
usará new y delete.

También podría gustarte