Un puntero 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.
¿QUÉ ES UN PUNTERO?
Slide 3
Cuando una variable se declara se asocian 3
atributos. int n; /* asocia al nombre n, el tipo int y la dirección de
alguna posición de la memoria donde se almacena el valor de n */
DIRECCIONES DE MEMORIA
Slide 4
Tiene correspondencia con la vida diaria. Cuando
se envía una carta por correo su información se entrega basada en un
puntero (la dirección de esa carta). Cuando se telefonea a una persona,
se utiliza un puntero (el número de teléfono que se marca) Un puntero en
C es la dirección de una variable.
EL CONCEPTO DE PUNTERO
Slide 5
REGLAS QUE RIGEN A UN PUNTERO
Un puntero es una variable como cualquier otra;
Una variable puntero
contiene un dirección que apunta a otra posición de memoria;
En esa
posición se almacenan los datos a los que apunta el puntero;
Un puntero
apunta a una variable de memoria.
Slide 6
El valor de un puntero es una
dirección. La dirección depende del estado de la computadora en la cual
se ejecuta el programa.
RELACCION ENTRE *P Y P DIRECCION Q
Slide 7
* Ejemplos: int *ptr1; // puntero a un tipo de
dato entero (int) long *ptr2; // Puntero a un tipo de dato entero largo
(long int) char* ptr3; // Puntero a un tipo de dato char float *f; //
Puntero a un tipo de tado float
DECLARACION DE PUNTEROS
Slide 8
Asignar memoria (estáticamente)
int i; // define una
variable i.
int *p; // define un puntero p.
p=&i; // asigna la
dirección de i a p.
El operador & devuleve la dirección de la
variable a la cual se aplica *p =50;
El asterisco delante de la variable
puntero indica “el contenido de” de la memoria apuntada.
INCIALIZACION
Slide 9
A una variable puntero se le puede asignar la
dirección de cualquier objeto.
A una variable puntero se le puede
asignar la dirección de otra variable puntero (siempre que las dos
señalen el mismo objeto)
A un puntero se le puede inicializar con el
valor NULL
Una variable puntero puede ser restada o comparada con otra
si ambas apuntan a elementos de un mismo array.
ARITMÉTICA DE PUNTEROS
Slide 10
Un puntero puede apuntar a otra variable puntero. ejemplo int valor _e = 100; int *ptr1 = &valor _e; int **ptr5 =
&ptr1; valor _e = 95; *ptr1 = 105; **ptr5 = 99;
PUNTEROS A PUNTEROS
Slide 11
Con frecuencia se desea que una
función calcule y devuelva más de un valor, o bien se desea que una
función modifique las variables que se pasan como argumentos.
Cuando una
variable es local se puede hacer visible a otra función pasándola como
argumento.
También se pueden mezclar paso por referencia y paso por
valor.
Es posible declarar punteros a cualquier tipo de variable,
estructura o arreglo.
PUNTEROS COMO ARGUMENTOS
Slide 12
#include "iostream"
#include "stdio.h"
using namespace std;
int funcion(int valor)
{
valor = valor + 10; //Se le suma 10 return valor;
}
int funcionPunteros(int* valor)
{
*valor = *valor + 10; //Se le suma 10 a la posición en memoria
return *valor; }
int main()
{
int numero = 10; cout << "Antes de funcion " << numero << "\n"; //10
funcion(numero); //Se pasa por valor
cout << "Despues de funcion " << numero << "\n"; //10
cout << "Antes de funcionPunteros " << numero << "\n"; //10
funcionPunteros(&numero); //Se envía la dirección de memoria y la función resuelve la referencia
cout << "Despues de funcionPunteros " << numero << "\n"; //20 (10+10)
system("pause");
return 0; }
PROGRAMA EJEMPLO DE PUNTERO
Slide 13
Joyanes Zahonero PROGRAMACION EN C McGraw Hill, 2001
http://www.atc.uniovi.es/telematica/2ac/Practicas/Interfaz-
Win32-Sesion-1.pdf
http://dis.um.es/~lopezquesada/documentos/IES_0607/FP/cu
rso/UT8/UT8I.pdf