2009-09-04 4 views
9

Was bedeutet das & Symbol in Objective-C? Ich schaue mir gerade Datenstrukturen an und werde wirklich verwirrt.Was bedeutet das & Symbol in Objective-C?

Ich habe mich im Internet umgesehen, aber habe keine Antwort gefunden. Ich weiß, dass dies möglicherweise ein grundlegendes Ziel-C-Konzept ist, aber ich kann es einfach nicht verstehen.

Zum Beispiel:

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

Was ist der Code, hier mit eingehendem Paket zu tun?

+3

Den '' & ist ein Operator C; Wenn Sie sich in C nicht sehr wohl fühlen, könnte das Lernen von Objective-C ein Kampf für Sie sein. –

Antwort

14

& die C-Adresse-of unärer Operator ist. Er gibt die Speicheradresse seines Operanden zurück.

In Ihrem Beispiel wird es die Adresse des ersten Elements der incomingPacket Array zurück, die dann zu einem * int gegossen wird (Zeiger auf int)

8

Die gleiche Sache bedeutet es in C.

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

Im Grunde sagt dies, dass die Adresse des Beginns des incomingPacket (& incomingPacket [0]) ist ein Zeiger auf einen int (int *). Die lokale Variable pIntData ist als Zeiger auf ein int definiert und auf diesen Wert gesetzt.

So:

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

Warum dies tun? Wenn Sie wissen, dass die gestreamten Daten ein Array von Ints sind, erleichtert dies die Iteration durch die Ints.

Diese Aussage, wenn ich nicht irre, auch geschrieben worden sein könnte:

int *pIntData = (int *) incomingPacket;