domingo, 29 de mayo de 2011

Objective-C - Punteros

La memoria en la computadora puede ser imaginada como una serie de casillas de correo, cada una con el menor tamaño que usa una computadora (un byte).
Estas casillas de correo se enumeran secuncialmente, entonces para obtener la dirección siguiente agregamos un 1 a la dirección actual.
Por ejemplo, tomemos la siguiente declaración:
int anInteger = 42;
Asumimos que anInteger (con el valor 42) es alojado en la dirección de memoria 32, en otras palabras la dirección de memoria 32 que se llama anInteger contiene el valor 42.
Las direcciones de memoria pueden contener distintos tipos de valores, un int, un float o un puntero que es una dirección de memoria.

Ahora veamos esta declaración:
int *anIntPointer = &anInteger
La primera parte de la declaración declara una variable llamada anIntPointer.
El * le dice al compilador que este tipo es un puntero a un entero en vez de un entero. La referencia & le dice al compilador que quiere que anIntPointer se inicialice con la dirección de anInteger, que es la variable que declaramos antes.

En otras palabras, anIntPointer tendra la dirección de memoria de anInteger, por lo tanto anIntPointer tendra guardado el valor 32.
Para ir desde el puntero anIntPointer que contiene la dirección de anInteger al valor actual de anInteger utilizamos el operador (*).



por ejemplo, el resultado del siguiente código
int anInteger = 42;
    int *anIntPointer = &anInteger;
    NSLog (@”anInteger = %i”, anInteger);
    NSLog (@”*anIntPointer = %i”, *anIntPointer);
    
es

anInteger = 42
*anIntPointer = 42

6 comentarios:

Anónimo dijo...

Me encantan tus publicaciones, sige posteando plzzz no nos abandones :)

Christian Martinez M dijo...

Vas a seguir agreando contenido? me parece muy interesante

Jose Silva dijo...

Estoy leyendo desde el principio, sigue publicando :)

Anónimo dijo...

Gracias por crear y compartir todo esto!, me lo he guardado para revisarlo con detención, te agradesco la adaptación del ingles al español que hiciste, ojala que puedas continuar con los contenidos!, pero como sea... suerte en todo!

Anónimo dijo...

Hola, recién empiezo con esto de la programación de aplicaciones, entonces los que está haciendo (traducir los cursos de Standford) es lo máximo. Por favor, no decaigas.

Gracias, y adelante!

Anónimo dijo...

Felicidades, y gracias por el trabajo :D
Ojalá sigas publicando