Вы находитесь на странице: 1из 10

“2020.

Año de Laura Méndez de Cuenca; emblema de la mujer Mexiquense”

TECNOLOGICO DE ESTUDIOS SUPERIORES DE JOCOTITLAN

¿Qué es un apuntador? En C++

PRESENTACION:
RESUMEN

Elaborado por:
ISRAEL MONROY ALVAREZ

MATERIA: ESTRUCTURA DE DATOS


GRUPO: IC-303
DOCENTE: INGENIERO MARCIAL JESUS MARTINEZ BLAS
CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES

Jocotitlán, Mexico,11 de septiembre de 2020.


RESUMEN:
El manejo de memoria dentro de un programa nos lleva a hablar directamente sobre la
memoria principal de nuestra computadora, por tanto, vale la pena primero conocer lo básico
de este elemento que es un “APUNTADOR ”con tal de ir construyendo una buena base sobre la
que podamos colocar todo aquello que aprendamos en las siguientes hojas, teniendo como
objetivo general dar una definición de un “APUNTADOR” y como objetivo especifico , como este
trabaja en un programa basado en el lenguaje de C++.
INTRODUCCIÓN
Un programa de computadora usa direcciones de memoria para ejecutar código de máquina y
para almacenar y recuperar datos . En las primeras computadoras, las direcciones lógicas y
físicas correspondían, pero desde la introducción de la memoria virtual, la mayoría de los
programas de aplicación no conocen las direcciones físicas. Observando a la memoria desde un
mayor nivel de abstracción, podrías imaginarla como si de un gran conjunto de celdas se tratara,
cada una de estas celdas estaría marcada por un número que las identifica y es a este número
al que podríamos referirnos como: dirección de memoria. Si tenemos la dirección de memoria,
podemos ubicar fácilmente la celda en cuestión y acceder a lo que esta contiene. Por
consiguiente Los punteros nos permiten acceder directamente a cualquier parte de la memoria.
Esto da a los programas C una gran potencia. El usuario de este documento encontrara como
propósito darle un concepto breve de lo “¿Qué es un apuntador?” y así mismo un pequeño
código en el lenguaje de C++ explicando un concepto y a la vez un ejemplo del mismo.
Marco Referencial:
COMPETENCIA I Conoce y comprende las diferentes estructuras de datos, su clasificación y
forma de manipularlas para buscar la manera más eficiente de resolver problemas.
¿Qué es un apuntador?
Términos simples:

El apuntador, en el teatro, la revista y la ópera es la persona que asiste u orienta a los actores cuando han
olvidado su texto o no se mueven correctamente sobre el escenario.

Termino en Programacion:

Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de
memoria de otra variable.

**No hay que confundir una dirección de memoria con el contenido de esa dirección de memoria.

Una variable en un programa es algo con un nombre, que contiene un valor que puede variar. El modo en
que el compilador y el enlazador (linker) manejan esto es que asignan un bloque específico de la memoria
dentro de la computadora para guardar el valor de una variable. El tamaño de este bloque depende del
rango en que a esta variable le es permitido variar.

Cuando declaramos una variable le informamos al compilador 2 cosas, el nombre de la variable y el tipo
de la variable.

<tipo> * <variable>

1. Los apuntadores como cualquier otra variable deben de ser declarados antes de que puedan
ser utilizados.
2. El tipo de un apuntador lo proporciona implícitamente el tipo de la variable a la que apunta.
3. Los apuntadores pueden ser declarados para apuntar a objetos de cualquier clase

En C no debemos, ni podemos, indicar numéricamente la dirección de memoria, si no que utili-zamos una


etiqueta que conocemos como variable (las variables tienen asociada una dirección de memoria). Lo que
nos interesa es almacenar un dato, y no la localización exacta de ese dato en memoria.

Una variable apuntador se declara como todas las variables. Debe ser del mismo tipo que la variable
apuntada. Su identificador va precedido de un asterisco (*):

Detalles al crear y usar punteros en C++

El tipo de dato del apuntador debe coincidir con el de la variable cuya posición en memoria apuntan. En
el ejemplo vemos que tanto variable como apuntador son enteros.

• Siempre que queremos usar el apuntador debemos anteponer el asterisco (*) para indicar que
usaremos el valor en la posición de memoria apuntada.
• De no usar el asterisco el comportamiento sería impredecible. Estaremos haciendo uso de la
dirección de memoria más no del valor almacenado en ésta.
• Después de usar un puntero, especialmente si trabajamos con arreglos o matrices, es MUY
recomendable liberar la memoria utilizada con la función delete (tal como en el ejemplo)
• Un puntero o apuntador puede ser de cualquier tipo de dato, inclusive los podemos usar con
tipos complejos.

Es decir: hay tantos tipos de APUNTADORES como tipos de datos, aunque también pueden declararse
APUNTADORES a estructuras más complejas (funciones, struct, objetos (instancias de una clase), ficheros
e incluso APUNTADORES vacíos (void) y APUNTADORES nulos (NULL).
Declaración de punteros .

En general, dado un Tipo atómico, los punteros de ese tipo se declaran en la forma
Tipo * puntero_de_tipo;
esto es: basta intercalar un asterisco entre el nombre del tipo y el nombre de la variable
para hacer que la variable declarada sea un puntero de algun objeto del tipo Tipo .
Punteros no iniciados .

En el momento de su declaración, el puntero contiene un valor que no está definido, y no es otro que la
trama de bits que haya en memoria en la zona reservada para el puntero por el compilador. Esta trama
es ciertamente aleatoria e imprevisible, y puede muy bien ser la dirección de una zona de memoria
perteneciente a la aplicación, o más probablemente se tratará de una zona de memoria no perteneciente
a aplicación. Si interpretamos la (¡inexistente¡) variable señalada por el puntero, el valor obtenido es
impredecible, y lo más probable es que su codificación no se ajuste al tipo de variable asociado al puntero.

Antes de emplear un puntero para obtener el valor de una variable o para dar valor a la variable señalada
por el puntero, es imprescindible almacenar en el puntero la dirección de la zona de memoria deseada.

¿Cómo se le da valor a un puntero?


Mediante una operación de asignación. Para obtener la dirección de la zona de memoria que debe señalar
el puntero se puede emplear el operador ampersand (&) o bien cualquier función que proporcione un
puntero de tipo compatible con el nuestro. En este sentido, hay que tener en cuenta que C aplica a los
punteros las mismas reglas de comprobación estricta de tipos que se aplican a todas las demás variables.

La constante NULL .
Como medida preventiva, el lenguaje C ofrece una constante que denota el puntero nulo, esto
es, una dirección tal que todo intento de acceder a la variable que comienza en esta dirección
(tanto para leer como para escribir) se detecta y supone la parada inmediata del programa. Esta
constante se denomina NULL .

Operador &
El operador & proporciona la dirección de su operando, esto es, del objeto que se le proporciona
como argumento. En general, su aplicación tendrá la forma siguiente:

Operador * y acceso a variables señaladas por punteros


El operador *, antepuesto a una variable de tipo puntero, denota el objeto señalado por ese
puntero. A este proceso se denomina "deshacer una indirección". De este modo se consigue una
expresión totalmente equivalente al nombre de una variable, que podrá empleare exactamente
igual que el nombre de la variable, si existiera. La utilización del operador * será en general de
la forma
Ejemplos

El resultado sería

En Hexadecimal nos da la dirección


Ahora un ejemplo claro con las características de el propio puntero analizando así sus
diferentes estructuras.

El resultado seria así .


Análisis y resultados
Los punteros tienen muchas utilidades; por ejemplo, nos permiten pasar argumentos (o
parámetros) a una función y modificarlos. También permiten el manejo de cadenas y de arrays.
Otro uso importante es que nos permiten acceder directamente a la pantalla, al teclado y a todos
los componentes del ordenador. Si sólo sirvieran para almacenar direcciones de memoria no
serían de mucha utilidad. Nos deben dejar también la posibilidad de acceder al contenido de
esas posiciones de memoria. Para ello se usa el operador * (operador de indirección), que no
hay que confundir con el de la multiplicación. Los APUNTADORES tipo void pueden apuntar a
otro tipo de datos. Es una operación delicada que depende del tipo de compilador
Conclusiones
Manipular datos que se encuentran en memoria es la principal razón de ser de los apuntadores,
por tal motivo, confío en que esta introducción haya servido para ofrecerte un conocimiento
básico sobre qué es la memoria, cómo se organiza y de qué manera funciona; todo esto son los
primeros pasos para comprender mejor lo que vendrá en notas posteriores. Lo tratado en esta
nota se considera lo más básico sobre apuntadores, una vez conociendo cómo crearlos y cómo
almacenar una dirección, podemos comenzar a conocer cosas más interesantes.
En la próxima entrega extenderé un poco más de lo que hemos visto hasta aquí, hablaremos
sobre el concepto de NULL y de cómo realizar operaciones aritméticas con los valores que
guardan los apuntadores.

Вам также может понравиться