2009-09-04 39 views
9

Biểu tượng & có ý nghĩa gì trong Mục tiêu-C? Tôi hiện đang xem xét các cấu trúc dữ liệu và tôi đang rất bối rối.Biểu tượng & ý nghĩa có ý nghĩa gì trong Mục tiêu-C?

Tôi đã xem xét trên web cho nó nhưng chưa tìm thấy câu trả lời nào cả. Tôi biết đây có thể là một khái niệm Objective-C cơ bản, nhưng tôi không thể có được đầu của tôi xung quanh nó.

Ví dụ:

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

được mã làm gì với gói đến đây?

+3

Các '&' là một nhà điều hành C; nếu bạn chưa khá thoải mái trong C, việc học Objective-C có thể là một cuộc đấu tranh cho bạn. –

Trả lời

14

& là C address-của nhà điều hành unary. Nó trả về địa chỉ bộ nhớ của toán hạng của nó.

Trong ví dụ của bạn, nó sẽ trả về địa chỉ của phần tử đầu tiên của mảng incomingPacket, mà sau đó được đúc đến một int * (con trỏ đến int)

8

Cùng điều đó có nghĩa là trong C.

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

Về cơ bản này nói rằng địa chỉ của đầu incomingPacket (& incomingPacket [0]) là một con trỏ đến một int (int *). Biến pIntData biến cục bộ được định nghĩa là một con trỏ tới một int và được đặt thành giá trị đó.

Như vậy:

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

Tại sao làm điều này? Nếu bạn biết dữ liệu bạn đang được truyền trực tiếp là một mảng các int, thì điều này làm cho nó dễ dàng hơn để lặp qua các int.

Tuyên bố này, Nếu tôi không nhầm, có thể cũng đã được viết như sau:

int *pIntData = (int *) incomingPacket; 
Các vấn đề liên quan