To wypadek składni C, które można napisać albo int *i
lub int* i
lub nawet int * i
. Wszystkie są przetwarzane jako int (*i)
; IOW, *
jest związany z deklaratorem, a nie ze specyfikatorem typu. Oznacza to, że w deklaracjach jak
int* i, j;
tylko i
jest zadeklarowana jako wskaźnik; j
jest deklarowana jako zwykła int. Jeśli chcesz zadeklarować oboje jako wskaźniki, trzeba by napisać
int *i, *j;
Większość C programistów używa T *p
w przeciwieństwie do T* p
, ponieważ a) deklaracje w C są wyrazem-centric, nie obiekt-centric oraz b) bardziej odzwierciedla składnię deklaracji.
Jako przykład tego, co rozumiem przez wyrażenie-centryczne, załóżmy, że masz tablicę wskaźników do int i chcesz uzyskać wartość całkowitą w elemencie i
. Wyrażenie odpowiadające tej wartości to *a[i]
, a wyrażenie tego wyrażenia to int
; w związku z tym deklaracja tablicy to:
Kiedy widzisz wyrażenie "deklaracja używa mimika" w odniesieniu do programowania w języku C, to właśnie ma na myśli.
możliwy duplikat [W C, dlaczego gwiazdka jest przed nazwą zmiennej, a nie po znaku?] (Http://stackoverflow.com/questions/398395/), [Jaki jest twój preferowany styl deklaracji wskaźnika i dlaczego?] (http://stackoverflow.com/questions/377164/) – outis