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

jueves, 5 de mayo de 2011

¿Cómo programar C con XCode?

Seleccionamos File > New > New Project, luego elegimos "Command Line Utility" y seleccionamos C.
En el proyecto vamos a ver que tenemos creado un archivo llamado main.c para escribir nuestro código.
Eso es todo!