You are on page 1of 20

Apuntadores en DevC++

Equipo 7:
Leyva Altamirano Kevin
Manrique Bences Topacio
Pano San Juan Carlos
Ramirez Cisneros Edgar
Torres Jonathan

Interesaaanteee..
Punteros.
Vector = Matriz.
Antologa
cotidiana.

Qu?
Es una variable que contiene
direcciones de otras variables, es
decir, almacenan la direccin de
memoria donde se encuentran los
datos asociados a dichas variables.
Los apuntadores son otro tipo de dato
que se utilizan en lenguaje de
programacin C.

Utilidad
Su utilidad radica en que permiten a un programa ser
ms potente, dinmico y flexible.
Permiten el acceso a memoria de manera ms
eficiente.
Trabajar con apuntadores implica la no manipulacin de
variables en s, sino manejar direcciones de memoria
en la cuales residen los datos.

Conceptos bsicos
1. Un apuntador es una variable como cualquier otra
2. Una variable apuntador contiene una direccin que apunta a otra
posicin de memoria
3. En esa posicin de memoria se almacenan los datos a los que
apunta el apuntador
4. Un apuntador apunta a una variable que se encuentra almacenada
en alguna parte de la memoria fsica.

Direccin de memoria
Cuando una variable se declara, se le asocian tres atributos
fundamentales a dichas variables:
Identificador
Tipo de dato
Direccin de memoria.
Ejemplo:
int n;

Declaracin
Al igual que todas la variables, los apuntadores deben de ser declarados antes de
ser utilizados, la forma de declarar un apuntador es el siguiente:
<tipo_de_dato_apuntado> * <identificador_apuntador> = & <variable_a_apuntar>;
<tipo_de_dato_apuntado>: Es el tipo de dato al cual va a apuntar el apuntador;
*: Es el elemento que dice que la variable va a ser un apuntador;
<identificador_apuntador>: Es el nombre del apuntador;
&: Es el elemento para obtener la direccin de la variable apuntada;
<variable_a_apuntar>: Identificador de la variable a apuntar.

Operadores para utilizar


apuntadores

Inicializacin
Un apuntador no se inicializa cuando se declara y es preciso
inicializarlo antes de su uso ya que de lo contrario no se estar
haciendo referencia a ninguna localidad de memoria, provocando
un error en tiempo de compilacin
Para asignar la direccin de memoria a un apuntador se utiliza el
operador de referencia de direccin &, por ejemplo:
int *ptr = &x; (Inicializacin esttica)

Declaracin

Segundo mtodo
Asignacin dinmica de memoria,
para realizar este proceso se
utilizan funciones de asignacin
de memoria como malloc(),
calloc(), realloc() y free().
Para asignar un nuevo valor o
recuperar dicho valor que se
encuentra almacenado en
localidad de memoria a la que
apunta el apuntador se utiliza el
operador de indireccin *. por
ejemplo:

Funciones de asignacin dinmica


La asignacin dinmica es la forma en la que un programa puede obtener
memoria mientras se esta ejecutando.
No es necesario especificar en la declaracin de variables la cantidad de
memoria que se va a requerir.
Biblioteca stdlib.h:
malloc(), calloc(), realloc() y free().

Enlace a tipo de datos especficos

C++ requiere que las


variables apuntador
direccionen realmente
variables del mismo
tipo de dato ligado en
s declaracin.

Indireccin de un apuntador

Apuntadores a apuntadores
Para realizar esta
operacin se hace
preceder a la variable
apuntador el nmero
de asteriscos
necesarios para
direccionar a los
apuntadores, es
decir:

Aritmtica de apuntadores
Un apuntador es una variable que puede modificar el valor al
que apunta, es decir, se puede realizar ciertas operaciones
aritmticas con ellos.
A un apuntador se le puede sumar o restar un entero n;
esto hace que apunte n posiciones hacia adelante o hacia
atrs de la direccin actual en la pila de memoria, sin
embargo, a un apuntador no se le puede sumar o restar un
nmero de coma flotante, ni multiplicar, ni dividir.
ptr = ptr + n;

Aritmtica de apuntadores
A un apuntador se le
puede aplicar el
operador ++ y --,esto
hace que obtenga la
direccin del siguiente o
anterior elemento en la
memoria de datos.

Normas bsicas.
Si nos atenemos a las siguientes normas nunca deberamos tener problemas
con los punteros:
1. Por cada sentencia de reserva de memoria tiene que haber una sentencia de
liberacin.
2. Para asignar un puntero a otro, el puntero asignado no debe tener asignada
memoria previamente.
3. Para asignar un valor a la memoria referenciada por un puntero es necesario
que se haya reservado memoria previamente.
4. Cuando la memoria apuntada por un puntero ha desaparecido se debe asignar
el valor NIL al puntero.
5. Nunca se pueden perder todas las referencias a memoria reservada pues
entonces ya no se podra liberar.

Fuentes
http://eafranco.com/docencia/algoritmia/files/22/Clase_22.pdf
http://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/
http://profesores.fi-b.unam.mx/efrenm/Practica2.pdf
http://mmedia1.fi-b.unam.mx/material/356_sahh751112_moduloid.teacher.pdf
(pg. 26)
http://unoyunodiez.com/2011/02/09/la-verdad-sobre-vectores-y-punteros-y-const
/
http://profesores.fi-b.unam.mx/laloea/pamn/htm/docs/ArrAp.pdf
http://profesores.fi-b.unam.mx/cintia/cmn5.pdf
http://profesores.fi-b.unam.mx/cintia/Lenguaje_C.pdf
http://di002.edv.uniovi.es/~dani/asignaturas/apuntes-leccion9.PDF
http://utch2009.files.wordpress.com/2010/04/apuntadores.pdf

You might also like