Vous êtes sur la page 1sur 5

SECRETARA DE EDUCACIN PBLICA

DIRECCIN GENERAL DE EDUCACIN SUPERIOR TECNOLGICA


INSTITUTO TECNOLGICO DE TUXTLA GUTIRREZ


PROGRAMACIN ORIENTADA A OBJETOS
APUNTADORES

INGENIERA EN SISTEMAS COMPUTACIONALES


Presenta:
MOLINA SOSA BENJAMN











Tuxtla Gutirrez, Chiapas, Mxico; 11 de Marzo de 2014


APUNTADORES
Cuando nosotros sealamos (con el dedo o cualquier otra cosa) lo hacemos
porque estamos especificando una cosa u objeto del cual estamos hablando,
aqu hacemos uso de un puntero. En Programacin Orientada a Objetos
sucedes lo mismo con un apuntador, ya que este representa las direcciones de
las variables a las que apuntan, no es una variable debido a que no guarda o
contiene valores especficos, solo representa direcciones de memoria que
pueden apuntar a objetos que pueden ser de tipo char, int, float, etc.
Para declarar un puntero se emplea el operador (*) antes de la variable puntero
y adems se debe indicar el tipo de dato al que apuntara esta variable:
Sintaxis:


Eje
mpl
o:


Sabemos que los punteros apuntan a objetos, por eso debemos tener muy en
cuenta que para poder hacer un buen uso eficiente de un puntero debemos de
asignarles valores de memoria vlidas de objetos, adems de que los tipos
tienen que ser compatibles, es decir que no podemos almacenar la direccin
de memoria de un objeto de tipo int en un puntero de tipo char. Entonces
los punteros slo pueden apuntar a objetos de un tipo determinado, pEntero
slo puede apuntar a un objeto de tipo int y pCaracter solo a tipo char.
En el ejemplo anterior, la variable puntero pEntero contiene la direccin donde
se almacenar un dato de tipo entero, pero *pEntero es una expresin que
corresponde a un entero; por lo tanto podemos emplear *pEntero en cualquier
<tipo> *<identificador>;

pM = &M;

int *pEntero; //Apuntador a un dato tipo entero (int)
char *pCaracter; //Apuntador a un dato tipo carcter (char)

pM = &M;

expresin que requiera la presencia de un entero, es decir *pEntero es una
expresin que representa un valor entero almacenado en la direccin de
memoria contenida en pEntero.
Para poder operar con punteros tenemos a disposicin el uso de los
operadores de referencia (&) y de indereccin (*). El operador (&) nos ayuda a
conocer la direccin de cualquier variable (operando) y solo se podr asignarle
a una variable que admita direcciones, es decir a una variable puntero,
literalmente se lee la direccin de.
Y el operador (*) permite obtener el dato ubicado en la direccin asignada a
una variable puntero y puede ser traducido como Valor apuntado por.









Ejemplo: Uso de Punteros

Pudimos ver que la asignacin de la direccin r a p fue posible pues r es un
entero y p fue declarado como puntero a entero, es decir son compatibles.


int r=3; // declaramos e inicializamos con 3 una variable entera r
r
int *p; // declaramos un puntero p a un entero
p

p= &r; // asignamos la direccin de r al puntero p


cout<< *p <<endl; // informamos 3, el dato apuntado por p
cout<< p; // informamos la direccin de memoria contenida en p




3
3

int *q; // valor entero apuntado por q
int x=10;
q = &y; // q es igual a la direccin de y.
cout<<*p;
p
r
float r, *t;
t= &r;

int *m, *n;
m=n;

int *q;
q+=4 // la dir original de q aumento 16 bytes
int *n,*s,*t,*o;
n==s s != o t > s n >= t o > n


Otro Ejemplo:





ptrID es un puntero a int, mientras que la variable ID es solo una variable del
tipo int. Todo puntero debe ser precedido por un asterisco (*) en la declaracin.

Tanto los objetos como los punteros contienen basura cuando son
declarados, por eso es recomendable, que cuando se declare un puntero que
no apunta a ningn objeto o algn sitio, este se le d un valor de cero o NULL
para evitar esos problemas.





Con los apuntadores tambien podemos hacer operaciones, las cuales algunas
son las siguientes:
Se puede asignar la direccion de un no puntero a la de un puntero.



Se puede agregar la direccion de un puntero a otro puntero, siempre y
cuando sean compatibles (mismo tipo de dato).



Es posible hacer operaciones aritmeticas a una variable puntero.



Podemos comparar diferentes punteros, con la condicion de que deben
ser del mismo tipo de dato (compatibles).

int *ptrID, ID;
ID = 8;
ptrID = &ID; // puntero a ID

pM = &M;

int *p = 0;
char *q = NULL;

pM = &M;


Existen otras funciones u otros tipos de apuntadores como son:
Punteros Void
Sabemos que el tipo void (vacio) la usbamos en funciones que no retornan
valores o parmetros. En este caso se usan punteros de tipo void cuando no
nos interesa el contenido de la memoria apuntada (pueden apuntar a cualquier
tipo de dato) sino solamente la direccin. La limitacin que tiene es que el dato
no puede ser referenciado directamente.
Punteros y parmetros de funciones
Los punteros en este caso son tratados como las variables al ser empleadas
como parmetros en una funcin. Podemos pasar una funcin como parmetro
a otra funcin.
Punteros y arrays (arreglos)
Los arrays (arreglos) estn ntimamente relacionados con los apuntadores, esto
es porque el nombre de un arreglo representa la direccin del primer elemento
del arreglo, quiere decir que el nombre es un puntero.



int x[6] = {1,2,3,4,5,6};

cout<< x<<endl; // obtenemos como salida la direccin del elemento
1 del arreglo. Por ejemplo: 0x22ff18

cout<< &x<< endl; // obtenemos como salida la direccin del elemento
1 del arreglo. Por ejemplo: 0x22ff18

Vous aimerez peut-être aussi