ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS


Enviado por   •  17 de Febrero de 2012  •  2.758 Palabras (12 Páginas)  •  694 Visitas

Página 1 de 12

INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

Antes de pasar a la siguiente página le recomiendo que:

Haga Clic aquí para ver(Objeto Virtual de aprendizaje) que le ayudará a fortalecer sus conocimientos relacionados con la Unidad 1 del curso.

Los Apuntadores y la Gestión Dinámica de Memoria

Las variables son utilizadas por los programadores para almacenar datos de diferentes tipos según sea el caso, entre ellas se diferencian las variables estáticas y las dinámicas.

Variables estáticas

Las variables estáticas como recordamos en los inicios de los fundamentos de programación, son aquellas que el programador les asigna memoria antes de la ejecución del programa o de una función, las variables estáticas se llaman mediante el nombre de la misma, que ha sido declarado por el programador.

Variables dinámicas

Las variables dinámicas deben su nombre al hecho de que pueden ser creadas y destruidas durante el tiempo de ejecución de un módulo.

Para el manejo de variables dinámicas se hace indispensable la utilización de apuntadores, así como de funciones especiales para la asignación y liberación de la memoria correspondiente a dichas variables.

Apuntadores

Para entender qué es un puntero veremos primero cómo se almacenan los datos en un computador. La memoria de un computador está compuesta por unidades básicas llamadas bits. Cada bit sólo puede tomar dos valores, normalmente denominados alto y bajo, ó 1 y 0. Pero trabajar con bits no es práctico, y por eso se agrupan. Cada grupo de 8 bits forma un byte u octeto. En realidad el microprocesador, y por lo tanto nuestro programa, sólo puede manejar directamente bytes o grupos de dos o cuatro bytes. Para acceder a los bits hay que acceder antes a los bytes. Cada byte tiene una dirección, llamada normalmente dirección de memoria.

Conceptos básicos

Un apuntador es una variable, que almacena como contenido una dirección de memoria, de otra variable a la que apunta, dicha dirección representa el lugar donde se almacena un dato. Los apuntadores tienen un tipo de dato específico y solo pueden apuntar a espacios de memoria con datos del mismo tipo. Por supuesto, a partir de esa dirección de memoria puede haber cualquier tipo de objeto: un char, un int, un float, un array, una estructura, una función u otro puntero. Seremos nosotros los responsables de decidir ese contenido.

Con los apuntadores es posible manipular estructuras de datos o asignar memoria dinámica.

Operaciones básicas con apuntadores

Declaración

Los punteros se declaran con un asterisco, de esta forma:

tipo *variable;

Por ejemplo:

int *puntero;

Se dice que la variable puntero es un puntero a enteros (apunta a un entero).

Asignación

El valor que puede adquirir un puntero es, por ejemplo, la dirección de una variable.

El operador & devuelve la dirección de una variable:

puntero = &variable;

Desreferencia de un puntero

Se puede alterar la variable a la que apunta un puntero.

Para ello se emplea el operador de desreferencia, que es el asterisco:

*puntero = 45;

En este caso, se está introduciendo un 45 en la posición de memoria a la que apunta puntero.

Declaración de apuntadores

Los apuntadores son variables automáticas cuyos valores representan direcciones de memoria correspondientes a otras variables.

La sintáxis para la declaración de un apuntador es la siguiente:

tipo *identificador ;

Ejemplo: int *apunt; // Declaración del apuntador apunt // Se dice que : "apunt va a apuntar a // variables de tipo int" donde; apunt es el nombre del apuntador y (*) es el operador de indirección

En el ejemplo anterior, puede decirse que:

*apunt se refiere al objeto apuntado por apunt . apunt es un apuntador a objetos de tipo int

Obsérve que el operador de indirección utiliza el mismo símbolo que el operador de multiplicación. En este caso el asterisco le indica al sistema que se define una variable apuntador. Ejemplos:

int *x; x es un apuntador de tipo entero. char *y; y es un apuntador de tipo caracter. double *p, *q; p y q son apuntadores de tipo real doble precisión.

Los operadores utilizados para trabajar variables apuntadores son el ( * ) asterisco llamado operador de indirección, y el ( & ) ampersand, llamado operador de dirección.

• * toma su operando como una dirección de memoria y retorna la información almacenada en ese lugar.

• & devuelve la dirección de memoria de su operando.

Recordemos su utilización en el siguiente grupo de instrucciones:

Veamos un ejemplo

Apuntadores a apuntadores

Como se vio al principio de la unidad, un apuntador también es una variable. Su dirección puede ser almacenada por otra variable apuntador, por lo que puede hablarse de un apuntador a un apuntador.

Esto puede extrapolarse para dos o más variables, como se observa en el ejemplo siguiente de apuntadores a apuntadores.

#include <iostream.h>

#include <conio.h>

void main() {

int x, *a, **b, ***c ;

clrscr();

a = &x ;

*a = 100 ;

b = &a ;

**b += *a ;

c = &b ;

***c += **b + *a ;

cout

...

Descargar como (para miembros actualizados)  txt (16.7 Kb)  
Leer 11 páginas más »
Disponible sólo en Clubensayos.com