Está en la página 1de 18

UNIDAD 6 Y 7.

PUNTEROS Y
ARCHIVOS

Materia: programación básica


Ing. mecatrónica
Punteros o Apuntadores. Definición

Un puntero o apuntador no es más que una variable, en la


cual se almacena una dirección de memoria. Esto parece muy
simple, pero luego da muchos quebraderos de cabeza. Al ser una
dirección de memoria, le podemos decir a un puntero que en ese
lugar donde apunta queremos almacenar un valor, por ejemplo un
número.
6.1 Declaración e inicialización
■ Un puntero o apuntador es una variable
que contiene la dirección de otra
variable.

■ También podríamos decir que


un puntero es una variable que
representa la posición (más que el valor)
de otro dato, tal como una variable o un
elemento de un array.

■ Cuando una variable puntero es definida,


el nombre de la variable debe ir
precedido de un asterisco (*). Este
identifica que la variable es un puntero.
Por tanto, una declaración de puntero
puede ser escrita en términos generales
6.2 Operadores de Apuntador
<tipo> es cualquier tipo de variable en C.

<identificador> es el nombre del puntero. El tipo o tipo base, indica el tipo de variables que
se podrán manipular a través del puntero.

& Devuelve la dirección de memoria del operando.


Devuelve el valor almacenado en la dirección de memoria que determina el operando.

NOTA:
Es importante que los punteros siempre apunten a variables del mismo tipo. Si se mezclan los
tipos, los resultados son erróneos.
También es importante inicializar los punteros antes de utilizarlos. Si no se inicializan, es
decir, si no apuntan a algún sitio válido, se pueden alterar otras zonas de memoria, ya sea del
propio programa o del sistema operativo.
6.3 Uso de Apuntadores
¿Qué es un apuntador?
■ En términos generales, podemos referirnos como apuntador, puntero o pointer
a una variable que almacene una dirección de memoria; tan sencillo como eso.
El apuntador nos permitirá guardar la dirección de memoria donde se localiza
alguna otra variable o constante.
■ Normalmente solo necesitamos el nombre de la variable para poder acceder a su
valor; siendo así, ¿para qué molestarnos en conocer la dirección de dónde se
encuentra?
¿Cómo se usa un puntero
Una vez que ya sabemos que es un puntero, una
variable cuyo valor es una dirección de memoria, vamos
a proceder a explicar cómo se utilizan.
■ Imaginamos que el cartero sabiendo que hay dos
buzones nuestros, decide introducir un paquete (el
valor 23) en uno de nuestros buzones. Pero se da
cuenta de que lo introdujo en el buzón que no era,
entonces se le ocurre dejarnos en el buzón correcto
(b1), un papel donde pone “tu paquete está en b5“.
■ La manera de obtener el valor es bien sencilla,
nosotros abriríamos b1, veríamos que lo que hay
dentro es el papel y entonces diríamos, para alcanzar
el valor, tengo que ir a b5 y obtener su contenido.
¿Para que sirven los punteros?
■ Sin duda, los punteros son una herramienta indispensable para los sistemas
embebidos. Un sólido conocimiento de punteros y la habilidad de utilizarlos
eficientemente hace la diferencia entre un programador novato y uno experto.
Ellos proporcionan soporte para asignación de memoria dinámica y agregan otra
dimensión al control de flujo en un programa.
■ Los punteros tienen varios usos, incluyendo:
1. Crean código eficiente y rápido
2. Proporcionan asignación de memoria dinámica
3. Hacen expresiones compactas y concisas
4. Protegen datos pasados como parámetros a una función
5. Proporcionan la capacidad de pasar estructuras de datos mediante un puntero
sin ocasionar un exceso de código conocido como “overhead”
■ Los punteros crean código eficiente y rápido ya que están más cerca del
hardware. Esto significa que el compilador puede traducir más fácilmente la
operación en código máquina.
¿Cómo se declara un apuntador?

■ Prácticamente es la misma sintaxis que cuando declaramos una variable cualquiera, la


única diferencia es que debemos agregar un símbolo extra. El símbolo utilizado para
esto es el asterisco (*). Este caracter debe residir entre el tipo de dato de nuestra variable
y el nombre de esta:
int* num;

Actividad:

Acertijo
Seguro recuerdas que si tenías varias variables de un mismo
tipo, estas podían declararse en una misma línea colocando una
única vez el tipo de dato y enseguida identificadores separados
por comas. Atendiendo a lo anterior, ¿cuál de las dos opciones
siguientes crees que sería la correcta al momento de declarar
varios apuntadores?
Para leer una declaración de apuntador, lo único de que debes hacer es leer hacia atrás, como se
indica en la imagen siguiente:
Conociendo la dirección de una variable
■ Hemos hablado suficiente de direcciones de memoria y de cómo estas son los valores
que almacenan los apuntadores, siendo así, ¿cómo es que obtengo la dirección de alguna
variable para poderla guardar en un apuntador?
■ Así como existe un operador para declarar apuntadores, existe también uno para poder
obtener la dirección de una variable, este operador es el símbolo ampersand (&). Lo
único que debes hacer es colocar este operador inmediatamente a la izquierda del
identificador de la variable cuya dirección quieres saber.

1.// Tenemos nuestra variable de la que queremos conocer su dirección


2.double num = 10.0;
3.// Declaramos nuestro apuntador.
4.double *ptr;
5.// Obtenemos la dirección de «num» con el operador "dirección de" (el ampersand) y
6.// la almacenamos en el apuntador que creamos.
7.ptr = &num;
Conclusión
El uso de punteros ocasiona opiniones encontradas siempre, lo único
que puedo decir a título personal es que no es tan crítico como parece,
pero tampoco tan simple como algunos refieren. Los punteros
requieren abstracción y paciencia y sobre todo, práctica.
Archivos
Definición:
■ Un archivo es una secuencia de bits
almacenados en algún dispositivo externo
tal como un disco o una cinta magnética.
En C un archivo es simplemente un
flujo(stream) externo: una secuencia de
bytes almacenados en disco.
¿Cómo surge la necesidad de
utilizar archivos?
Algunas aplicaciones exigen transportar los datos
de una computadora a otra.
De ahí surge la necesidad de almacenar dichos
datos de forma permanente que permita retenerlos
en ciertos dispositivos de almacenamiento
secundario por un período de tiempo largo sin
necesidad de suministrarles energía, de tal forma
que permitan transportarlos y utilizarlos en otro
equipo computacional.
Ejemplos de archivos
■ Se identifica por un nombre valido por el sistema operativo.
■ El nombre puede contener una extensión que permite indicar el tipo o categoría al
cual el archivo pertenece. Algunos ejemplos son:
■ TXT Texto
■ EXE Ejecutables
■ COM Programas Compilados
Operaciones
Tipos de archivos
■ Por la forma de almacenamiento de los  Por la forma de acceso:
datos:

De texto Secuenciales

Binarios Directos
Referencias Bibliográficas
■ Duran, J. (2021, 4 junio). ¿Qué es un puntero y como se usan?
https://lenguajedeprogramacion.com.
https://lenguajedeprogramacion.com/programacion-c/que-es-un-puntero-usos/
■ Joyanes Aguilar, L. (2008). Fundamentos de Programación (4.a ed., Vol. 1). McGraw-Hill
Education.
■ https://codingornot.com/02-apuntadores-conociendo-los-apuntadores
GRACIAS

También podría gustarte