Citat:
korak:Medjutim ne komentarises prevod *pNizB[ba] i (*pNizB)[ba] buduci da daju razliciti prevod.
U pitanju je to što je operator indeksiranja
[] većeg prioriteta nego operator dereferenciranja
*.
U prvom slučaju prvo će se izvršiti uvećavanje adrese koja se nalazi u pNizB za ba, pa će se to dereferencirati i time je završen posao operatora indeksiranja
[].
Zatim će se tako dobijena vrednost (ako je izraz smislen trebalo bi da je u pitanju neka memorijska adresa, tj. pNizB bi trebao da je niz pokazivača na nešto) još jednom dereferencirati operatorom dereferenciranja
*.
U drugom slučaju zagradama mijenjaš redosljed operacija: prvo se pNizB dereferencira operatorom dereferenciranja
* (a rezultat toga bi trebao da bude pokazivač na neki niz, tj. adresa na kojoj počinje neki niz), a onda se na tako dobijenu vrednost primjernjuje operator indeksiranja
[], tj. [ba] da bi se pristupilo nekom članu tog niza koji ima indeks ba.
Ti bi trebalo da objasni u čemu je razlika.
E sad, da li ove među-vrednosti koje se javljaju u toku izračunavanja izraza predstavljaju smislene adrese memorijskih lokacija na kojima se nalazi nešto smisleno ili si jednostavno dobio lutajuće pointere kao grešku nastalu ili zbog pogrešnog kodiranja ili pogrešnog razmišljanja... nemam pojma, mrzi me da pokušavam shvatiti šta si htio da postigneš, jer su ti objašnjenja malo konfuzna, a ja sam pascal 90% zaboravio, tako da...
Aritmetika pokazivača u C-u je izuzetno fleksibilna i moćna, ali znaš kako se kaže međ' C-programerima:
"With simple and powerfull tools you are in position to make simple but powerfull errors."
[Ovu poruku je menjao Odin D. dana 20.05.2013. u 23:31 GMT+1]