zacznijmy od wyjaśnienia operatorów:
* - wyłuskanie - jeśli x jest wskaźnikiem czyli wskazuje miejsce w pamięci, to *x jest wartością, która jest zapisana pod tym adresem
& - adresowanie - odwrotność * czyli jeśli x jest zmienną i ma swoją wartość to &x pokaże nam adres gdzie w pamięci jest x
teraz kod:
deklarujemy stałą n = 7 (const zabezpiecza zmienną przed zmianą wartości)
deklarujemy wskaźnik na int który będzie tablicą intów rozmiaru n
deklarujemy wskaźnik p1 który wskazuje to samo miejsce co t czyli początek tablicy n intów i p2, który wskazuje miejsce t + n - 1 co dokładnie znaczy że wskazuje na n-1 element tablicy na którą wskazuje t bo te przesunięcia są liczone po wielkości typu czyli t wskazuje miejsce, t+n wskazuje o n intów dalej niż t itd.
tego nie trzeba tłumaczyć mam nadzieję
weź miejsce na które wskazuje t, przesuń się o i intów w prawo i wyłuskaj z tego adresu, wpisz tam wartość i - ta linia jest dokładnie tym samym co
t[i] = i;
dopóki p1 i p2 nie wskazują na to samo miejsce
niech p1 wskazuje tam gdzie p2 (czyli na t[6] bo nie zmienialiśmy)
przesuń p1 o 1 w prawo, p2 o 1 w lewo (liczymi w wielkości intów)
po mojemu program po pewnym czasie w tej pętli się wysypie bo p2 będzie się cofał coraz dalej i dalej aż trafi na chronioną część pamięci zajętą przez system/środowisko/inny program
tu nie powinien w ogóle dojść