2009-09-04 9 views
9

Que signifie le symbole & en Objective-C? Je suis en train de regarder les constucts de données et je suis vraiment confus.Que signifie le symbole & dans Objective-C?

J'ai regardé autour du Web pour cela mais n'ai pas trouvé de réponse du tout. Je sais que c'est peut-être un concept de base de l'Objective-C, mais je n'arrive pas à comprendre.

Par exemple:

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

Quel est le code fait avec paquet entrant ici?

+3

Le '&' est un opérateur C; Si vous n'êtes pas déjà très à l'aise avec C, apprendre Objective-C pourrait être un combat pour vous. –

Répondre

14

& est le C-adresse de l'opérateur unaire. Il renvoie l'adresse mémoire de son opérande.

Dans votre exemple, il renvoie l'adresse du premier élément du tableau incomingPacket, qui est ensuite coulé à un int * (pointeur vers int)

8

Même chose que cela signifie en C.

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

En gros, cela dit que l'adresse du début de incomingPacket (& incomingPacket [0]) est un pointeur vers un int (int *). La variable locale pIntData est définie comme un pointeur sur un int et est définie sur cette valeur.

Ainsi:

*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. 

Pourquoi faire cela? Si vous connaissez les données que vous êtes en train de diffuser est un tableau d'ints, alors il est plus facile de parcourir les ints.

Cette déclaration, si je ne me trompe pas, pourrait aussi avoir été écrit:

int *pIntData = (int *) incomingPacket;