2009-09-04 18 views
9

¿Qué significa el símbolo & en Objective-C? Actualmente estoy viendo construcciones de datos y estoy realmente confundido por ello.¿Qué significa el & symbol en Objective-C?

He buscado en la web pero no he encontrado ninguna respuesta. Sé que este es posiblemente un concepto básico de Objective-C, pero no puedo entenderlo.

Por ejemplo:

int *pIntData = (int *)&incomingPacket[0]; 

Qué está haciendo el código con el paquete entrante aquí?

+3

El '&' es un operador de C; si todavía no te sientes cómodo en C, aprender Objective-C puede ser una lucha para ti. –

Respuesta

14

& es la dirección de C-del operador unitario. Devuelve la dirección de memoria de su operando.

En su ejemplo, devolverá la dirección del primer elemento de la matriz incomingPacket, que luego se convierte en una int * (puntero a int)

8

Lo mismo que significa en C.

int *pIntData = (int *)&incomingPacket[0]; 

Básicamente, este dice que la dirección del comienzo de incomingPacket (& incomingPacket [0]) es un puntero a un int (int *). La variable local pIntData se define como un puntero a un int, y se establece en ese valor.

Por lo tanto:

*pIntData will equal to the first int at the beginning of incomingPacket. 
pIntData[0] is the same thing. 
pIntData[5] will be the 6th int into the incomingPacket. 

Por qué hacer esto? Si sabe que los datos que está transmitiendo son una matriz de entradas, entonces esto facilita la iteración a través de las entradas.

Esta declaración, si no me equivoco, también podría haber sido escrita como:

int *pIntData = (int *) incomingPacket;