Punteros - PowerPoint PPT Presentation

About This Presentation
Title:

Punteros

Description:

1. Nivelaci n Funciones Men Vectores String 2. Memoria Din mica Recursividad Punteros Pilas Colas Listas rboles 3. Archivos Archivos de texto Archivos Binarios – PowerPoint PPT presentation

Number of Views:35
Avg rating:3.0/5.0
Slides: 13
Provided by: gabrielma5
Category:
Tags: memoria | punteros

less

Transcript and Presenter's Notes

Title: Punteros


1
Punteros
1. Nivelación Funciones Menú Vectores
String 2. Memoria Dinámica Recursividad Punter
os Pilas Colas Listas Árboles 3.
Archivos Archivos de texto Archivos Binarios
Recomendado http//c.conclase.net
2
Punteros
  • Un Puntero es una variable que tiene la dirección
    de memoria de otra variable.
  • Por ejemplo si la variable c almacena un char y
    p es un puntero a c, se representaría
  • El es un operador que devuelve la dirección de
    memoria de una variable
  • p c
  • Se dice que p apunta a c.

3
Operadores
  • Devuelve la dirección de memoria de una
    variable
  • Ya era usado en scanf()
  • No se usaba con vectores y string porque éstos
    son punteros al primer valor.
  • es el operador de indirección o desreferencia,
    devuelve el contenido de memoria apuntada por un
    puntero

4
Ejemplo
//Se declara x, y, z //ip apunta a un entero //ip
apunta a x //y 1 //x es ahora 0 //ip apunta al
vector z0 //ip apunta a z1
  • int x 1, y 2, z10
  • int ip
  • ip x
  • y ip
  • ip 0
  • ip z0
  • ip

5
Asignación Dinámica
  • Los punteros proporcionan el soporte necesario
    para el potente sistema de asignación dinámica de
    memoria de C.
  • La asignación dinámica es la forma en la que un
    programa puede obtener memoria mientras se está
    ejecutando.
  • A las variables globales por ejemplo, se les
    asigna memoria en tiempo de compilación.
  • Durante la ejecución no se pueden añadir
    variables globales o locales, pero existen
    ocasiones en las que un programa necesita usar
    cantidades de memoria variables.

6
  • NEW - Asigna memoria
  • New devuelve una referencia a una posición en
    memoria que a guardar el tipo indicado en la
    sentencia new.
  • Tras una llamada fructífera, new devuelve un
    puntero. Si no hay suficiente memoria libre para
    satisfacer la petición, se da un fallo de
    asignación y devuelve un NULL.
  • El siguiente código asigna memoria para guardar
    datos de una estructura persona persona p p
    new persona

7
DELETE Libera memoria
  • La instrucción delete es la opuesta a new porque
    devuelve al sistema la memoria previamente
    asignada.
  • Una vez que la memoria ha sido liberada, puede
    ser reutilizada en una posterior llamada a new.
  • Ejemplo
  • persona p p new persona
  • ..
  • delete p

8
Estructuras Dinámicas de Datos
  • Las estructuras básicas disponibles en C y C
    tienen una importante limitación no pueden
    cambiar de tamaño durante la ejecución.
  • Los vectores están compuestos por un determinado
    número de elementos, número que se decide en la
    fase de diseño, antes de que el programa
    ejecutable sea creado.
  • En muchas ocasiones se necesitan estructuras que
    puedan cambiar de tamaño durante la ejecución del
    programa.
  • Podemos hacer vectores dinámicos, pero una vez
    creados, su tamaño también será fijo, y para
    hacer que crezcan o diminuyan de tamaño,
    deberemos reconstruirlos desde el principio.

9
Estructuras Dinámicas de Datos
  • Las estructuras dinámicas nos permiten crear
    estructuras de datos que se adapten a las
    necesidades reales a las que suelen enfrentarse
    nuestros programas.
  • También nos permitirán crear estructuras de datos
    muy flexibles, ya sea en cuanto al orden, la
    estructura interna o las relaciones entre los
    elementos que las componen.
  • Las estructuras de datos están compuestas de
    otras pequeñas estructuras a las que llamaremos
    nodos, que agrupan los datos con los que
    trabajará nuestro programa y además uno o más
    punteros autoreferenciales, es decir, punteros a
    objetos del mismo tipo nodo.

10
Nodos
  • Una estructura básica de un nodo para crear
    listas de datos sería
  • El campo siguiente" apunta a un objeto del tipo
    nodo.
  • De este modo, cada nodo puede usarse como un
    ladrillo para construir listas de datos, y cada
    uno mantendrá ciertas relaciones con otros nodos.

11
Nodos
  • Para acceder a un nodo de la estructura sólo
    necesitaremos un puntero al primer nodo.
  • El nodo anterior se representará así
  • En estos tipos de datos el interés se centra más
    en la estructura de los datos que en el tipo
    concreto de información que almacenan.
  • Dependiendo del número de punteros y de las
    relaciones entre nodos, podemos distinguir varios
    tipos de estructuras dinámicas.

12
Estructuras a Estudiar
  • Pilas conocidas como listas LIFO (Last In, First
    Out el último en entrar es el primero en salir).
    Los elementos se "amontonan" o apilan, de modo
    que sólo el elemento que está encima de la pila
    puede ser leído, y sólo pueden añadirse elementos
    encima de la pila.
  • Colas conocidas como listas FIFO (First In,
    First Out El primero en entrar es el primero en
    salir). Los elementos se almacenan en fila, pero
    sólo pueden añadirse por un extremo y leerse por
    el otro.
  • Listas cada elemento sólo dispone de un puntero,
    que apuntará al siguiente elemento de la lista o
    valdrá NULL si es el último elemento. Cada dato
    queda ordenado
  • Arboles Binarios cada elemento dispone de dos
    punteros, pero las referencias nunca son a
    elementos anteriores, de modo que la estructura
    se ramifica y crece igual que un árbol.
Write a Comment
User Comments (0)
About PowerShow.com