Este greu, dar poate nu neapărat.

TL;DR

În comparație cu stilul int *ptr, găsesc stilul int* ptr mai intuitiv și, prin urmare, mai prietenos pentru începători. Încearcă-l dacă încă te lupți cu indicatorii!

K&R ne spune să declarăm un pointer ca int *ptr = &a; și spune că este intenționat ca mnemonic. Poate că este adevărat pentru programatorii cu ani sau decenii de experiență, dar pentru un începător care tocmai a terminat partea int a = 2;, nu prea are sens. Cu cât trebuie să mă gândesc mai mult la detaliile din spatele lui *ptr și cu atât mai mult trebuie să-mi reamintesc că int *ptr declară un pointer către un int deoarece, conform K&R, int * este tipul și * este operatorul de dereferențiere și *ptr este un int, devin mai confuz. Este mai degrabă contra-intuitiv și, deși m-am obișnuit recent cu acest stil, constat că „nu sunt singurul care simte acest lucru”.

Deși pot vedea beneficiile utilizării unui astfel de stil în C, inconsecvența acestuia cu sistemul de tipare îl face mult mai greu de înțeles pentru începători. Dimpotrivă, „stilul C++” mi se pare mult mai intuitiv, adică declari un pointer ca int* ptr = &a;. În acest fel, este imediat evident că tipul său este int*, la fel ca int și chiar int& (o referință C++) , variabila pe care tocmai am declarat-o este ptr, la fel ca a, iar operatorii * și & sunt doar doi operatori unari, nu parte a identificatorilor. Singurul lucru pe care trebuie să-l rețineți este că, așa cum a subliniat „Stroutstrup”, dacă trebuie să declarați mai multe pointeri cu o singură declarație, int* x, y; nu ​​va funcționa și este un defect evident al limbajului de care ar trebui să țineți cont.