Pointer se česky nazývá
ukazatel, a je to speciální druh proměnné, která
ukazuje nějaké místo v paměti. Prostě obsahuje přímo
adresu v RAM. Můžeš pracovat s obsahem na té adrese, ale také můžeš pracovat s adresami samotnými! Takže bych to trochu rozvedl:
Kód: Vybrat vše
int main(void)
{ int i, j, *p, *q;
p = &j; //do pointeroveho p se da adresa j
q = &i; //do q se da adresa i
i = 4; //do i se da ctverka
j = 22; //do j se da 22
*q = *q+26; /* k číslu na adrese v q se přičte 26 */
*p = i+7; /* k číslu na adrese v p se přičte 7 */
q = p; /* do q se okopíruje adresa z p, takže teď oba ukazatele ukazují na proměnnou j */
*q = *p+j; /* k číslu na adrese v p se přičte hodnota z j, a uloží se na adresu v q, takže se proměnná j zdvojnásobí */
A pokud chceš mít průběžně přehled co tvůj program vyvádí, vlož si za každý příkaz kontrolní výpis, třeba takhle:
printf("%d\t%d\t%d\t%d\n",i,j,*p,*q);Má to samozřejmě smysl až po přiřazení do i a j, předtím ti to bude psát hausnumera, a před definováním obou ukazatelů ti program dokonce spadne kvůli přístupu do cizí paměti!