2012-01-20 17 views
6

Podczas tworzenia tablicy wskaźnika wc, co robi efekt dodawania nawiasów?Tablica wskaźnika C

Przykładowo

int (*poi)[2];

vs

int *poi[2];

+0

Oszczędność zużycia na klawiaturze –

Odpowiedz

8

wskaźnik do tablicy 2 int s:

int (*poi)[2]; 

tablicy dwóch int Wskaźniki:

int *poi[2]; 

Normalnie tablica ma wyższy priorytet niż wskaźnik, ale jeśli dodać nawiasy następnie wskaźnik przychodzi „pierwszy”.

+0

.. naprawdę? [] jest mocniej wiążący Nie rozumiem, dlaczego jest to – lynnyilu

+0

@LynnYiLu - Tylko sposób w jaki zdefiniowano standard C. – Hogan

+1

http://binglongx.wordpress.com/2009/01/25/how-to-read-a-cc-declaration/ – Hogan

0

Nawiasy wiążą się mocniej niż *, więc pierwszym jest tablica wskaźników int, a druga jest wskaźnikiem do tablicy int.

+1

Masz to z powrotem do przodu, prawda? –

+0

W inny sposób myślę. –

2

Operator indeksu [] wiąże się silniej niż operator dezfen enacji *.

int *poi[2] 

przekłada się:

Jeśli widzisz poi, stosuje [x] do niego, a następnie w wyniku nieprawidłowego poprzez * i masz int. Więc jest to tablica 2 wskaźników do int.

W

int (*poi)[2] 

gdy nawiasy wymusić * być stosowane wcześniej. Zawsze o każdej porze poi jest używany, jeśli najpierw zastosujesz *, a następnie [x] otrzymasz numer int. To jest wskaźnik do tablicy 2 int.