Aritmetika pokazivaca je takva da kada se doda neki broj pokazivacu, onda se on 'pomera' da pokazuje na clan od trenutne pozicija + taj broj koji je dodat.
Znaci, ne pomeraju se bajtovi direktno da bi pokazivac pokazivao na neki clan.
Code:
*(pa+i);
Ako pa pokazuje na prvi clan u nizu (niz[0]) i ako je ovde i npr. 2 onda, pa pokazuje na treci clan.
Code:
*(pa+i*(sizeof(int))
U istom slucaju, ako pa pokazuje na prvi clan u nizu, i ako je i 2 a int 32-bitni, onda se pokazivac 'pomera' da pokazuje na 2 * 4, tj. na deveti clan.
Uostalom uveri se i sam:
Code:
int j, iNiz[10], *pNiz;
pNiz = iNiz;
for (j = 0; j < 10; j++)
iNiz[j] = j;
for (j = 0; j < 10; j++)
{
printf("iNiz[%d]:\t%d\t\t", j, iNiz[j]);
printf("pNiz + %d:\t%d\n", j, *(pNiz++));
}
pNiz -= 10;
printf("\n\n!!!\n*(pNiz + 2 * sizeof(int): %d\n", *(pNiz + 2 * sizeof(int)));
Nadam se da je sada jasnije ;o)