czytanie kodu c

0

prosiłbym o wyjasnienie niezrozumiałego dla mnie sformułowania w kodzie:

short *ptab;
//informacja: tab = 00A91628
//informacja: sizeof(short) = 2
ptab = tab + -6;
printf("$%d", *(ptab+=6));
printf("$%p", (tab + 6));
printf("$%p", &(ptab-=-2)[-2]);
printf("$%d$", (ptab-=-1)[2]); 

otóż, nie wiem co 'mają robić dwie ostatnie linie tego kodu , a dokładniej mówiąc co robią te kwadratowe nawiasy'.
Z góry dzięki za jakąkolwiek pomoc!

5

W C (i C++, pomijając przeładowane operatory) zapis a[b] jest równoznaczny z *(a+b), a więc i z b[a].

Tak więc (ptab-=-1)[2] to ptab[3] (oraz jednoczesna inkrementacja ptab). &(ptab-=-2)[-2] to to samo co &ptab[0]/&*ptab lub ptab (oraz jednoczesna podwójna inkrementacja ptab)

0

Da się jaśniej jeżeli można :D

1

Przecież masz napisane analogicznie do tego co masz w poprzednich dwóch liniach, które rozumiesz. Dalej to już podstawy dowolnego kursu C, część o wskaźnikach.

0

W takim razie czy mógłbyć podać, co wypisałby ten kod???

0

Dlaczego nie odpalisz środowiska i nie sprawdzisz samemu?
Dodatkowo: wiele środowisk ma wbudowany debuger, dzięki któremu będziesz dokładnie widzieć wartość i zawartość wskaźników i działanie tego co napisałeś - szybciej w ten sposób zrozumiesz co i jak ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1