2009-09-04 13 views
9

Co oznacza symbol & w Objective-C? Obecnie patrzę na dane i jestem bardzo zdezorientowany.Co oznacza symbol i znaczenie w Objective-C?

Rozejrzałem się po internecie, ale nie znalazłem żadnej odpowiedzi. Wiem, że to prawdopodobnie podstawowa koncepcja Objective-C, ale po prostu nie mogę tego zrozumieć.

Na przykład:

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

Co to jest kod robi z przychodzącego pakietu tutaj?

+3

'' & jest operatorem C; jeśli nie jesteś już całkiem wygodny w C, uczenie się Celu C może być dla ciebie walką. –

Odpowiedz

14

& jest C-adres wykonawcy jednoargumentowego. Zwraca adres pamięci swojego operandu.

W przykładzie powróci adres pierwszego elementu tablicy incomingPacket, który następnie wylewa do int * (wskaźnik int)

8

samo to znaczy w C.

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

Zasadniczo mówi, że adres początku incomingPacket (& incomingPacket [0]) jest wskaźnikiem do int (int *). Lokalna zmienna pIntData jest zdefiniowana jako wskaźnik do int i jest ustawiona na tę wartość.

Zatem:

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

Dlaczego to zrobić? Jeśli wiesz, że dane, które są przesyłane strumieniowo, to tablica int, to ułatwia iterację poprzez ints.

To stwierdzenie, jeśli się nie mylę, może również być zapisany jako:

int *pIntData = (int *) incomingPacket;