Citat:
Whitewater:Ne mogu jos uvek da sagledam u cemu je prava prednost pointer. Shvatio sam kako mogu da pristede memoriju kod dinamickog dodeljivanja lokacija i ucine kod elegantnim, npr liste stack... jedino da budem iskren ne nam koliko je to danas narocito potrebno. Ali to je vec posebna tema...
Bez pointera nemas dinamicku memoriju. Gomila biblioteka ocekuju da im proslijedis nekakav kontekst ili handle koji je cesto pointer. Ako neces da koristis pointere, postavljas drasticna ogranicenja na arhitekturu aplikacije, npr. pointeri omogucavaju nivo indirekcije koji je cesto potreban da razdvojis slojeve u aplikaciji.
Npr. zamisli da imas strukturu Context koja sadrzi gomilu parametara (npr. CLI parametri isparsirani za lak pristup). Razlicite funkcije unutar programa moraju da rade drugacije u zavisnosti od proslijedjenih parametara koje je korisnik proslijedio. Ovo se uglavnom radi tako sto proslijedis pokazivac na konstantnu strukturu (const ctx*), tako da svaka funkcija moze da cita polja iz te strukture, a ne moze da ih mijenja (read only). Alternativa bi bila da kopiras komplet strukturu prilikom svakog pozivanja funkcije, sto je veoma neefikasno (sizeof(*ctx) vs sizeof(ctx)). Da ne spominjem tek slucaj ako zelis da funkcije mogu da mijenjaju dio ove strukture, bez pointera to ne mozes efikasno da uradis.
Na kraju, ako ne znas razliku izmedju sledece 3 linije, tesko da mozes da se zoves C programerom.
Code:
const int *a;
int * const a;
const int * const a;