Kod: Zaznacz cały
#include <stdio.h>
/* tablica wskaznikow na znaki (tutaj ciagi znakow) */
char* c[]=
{
"DRUT",
"LUKA",
"RANT",
"BOHR"
};
/* tablica wskaznikow na wskazniki na ciagi znakow; czyli w twoim przypadku wskazuje
ona odpowiednio na "BOHR",'RANT","LUKA","DRUT" */
char** cp[]={c+3,c+2,c+1,c};
/* tablca wskaznikow na wskazniki na wskazniki na ciagi znakow (:P); czyli poprostu wskaznik na to co
zostalo zrobione w poprzedniej linijce */
char*** cpp=cp;
int main(void)
{
printf("%s",**++cpp+3); /* przesuwamy cpp na nastepny wskaznik (czyli na c+2), robimy pierwsza derefernecje, zeby wyluskac nasze c+2, robimy druga referencje zeby wyluskac wskaznik na ciag znakow "RANT" i na koncu przesuwamy ten wskaznik o 3 pozycje, czyli dostajemy ciag znakow "T\0", co skutkuje wypisaniem literki T */
printf("%s",*cpp[-1]+3); /*odwolujemy sie poprzez cpp na poczatek tablicy cp (wskazuje teraz na c+3) i przez dereferencje dostajemy sie do skladowej c+3, dereferencja przez gwiazdke udostepnia nam napis "BOHR", przesuwamy sie o 3 pozycje, czyli dostajemy ciag znakow "R\0" */
printf("%s",*--*++cpp+2); /* znow przesuwamy wskaznik cpp na nastepny wyraz (c+1 tym razem, bo cpp bylo na drugim elemencie) i pobieramy go dereferencja (mamy wiec wskaznik na element "LUKA"), otrzymany wskaznik dekrementujemy przesuwajac sie w tablicy c o jeden do tylu (na ciag znakow "DRUT"), dereferencja zwraca nam wskaznik na ciag znakow "DRUT", przesuwamy wskaznik o dwie pozycje w prawo, czyli dostajemy wskaznik na "UT\0", wyswietli sie wiec UT */
printf("%s",cpp[-1][-1]+2); /* cpp[-1]: trzymujemy wskaznik 'c+2' (wskaznik na "RANT"); cpp[-1][-1] majac wskaznik na c+2 cofamy sie o jeden w lewo, czyli dostajemy wskaznik na "LUKA", dodajemy dwa, czyli ostateczny wskaznik wskazuje na ciag znakow to "KA\0"; i to daje nam wyraz "TRUTKA"*/
printf("\n");
return 0;
}
Pozdrawiam