1.Ostatnio w liceum mieliśmy zajęcia z C. Była mowa o wskażnikach. Nauczyciel wprawdzie wspomniał o wskaźnikach podwójnych i potrójnych, ale na moje pytanie co przez to zyskujemy nie odpowiedział. Więc zadaje pytanie to wam.
To zmień nauczyciela. Musisz zrozumieć najpierw zasadę działania wskaźników i to jak działają w praktyce, bo patrząc na post to chyba ten wasz nauczyciel uczy samej teorii czyli nie musicie rozumieć tylko znać teorię.
Kod w podpunkcie 2. jest bez sensu.
Odpowiadając na pytanie o optymalizacje - nie, nie daje to żadnej optymalizacji w tym przypadku.
Tablica w C to tablica. Przy czym może być ona niejawnie konwertowana na wskaźnik do swojego pierwszego elementu, co jest często wykorzystywane.
Tablica wielowymiarowa to tablica, której elementami są tablice. Tablica wskaźników to zupełnie inna struktura danych, nie tylko semantycznie ale przede wszystkim pod względem technicznym.
Właściwie nie ma czegoś takiego jak ‘wielokrotny wskaźnik’. Po prostu wskaźnik może wskazywać również na inny wskaźnik.
Przykład: funkcja ma za zadanie zmodyfikować wskaźnik. Jeśli przekażesz jej wskaźnik, to zmodyfikuje lokalną kopię. Potrzebny więc wskaźnik do wskaźnika. Inny przykład: tablica łańcuchów znakowych, albo tablice wielowymiarowe.
Wskażnik to zmienna,która przechowuje adres pamięci,elementy tablicy są wskazywane *tab(początek+i)
tab[0]=*tab(początek+0);
tab[1]=*tab(początek+1);
Gdy chcesz odczytać tab(n) wykonywana jest operacja *tab(początek+n);
Obsługa kilkuwymiarowych tablic sprowadza się do *tab(początek+i+j) lub *tab(początek+i*j)
Teksty są też tablicami,wskażnik daje większą kontrolę przy dostępie do tablic,tylko trzeba umieć wyłapać zapis poza obszar pamięci,czyli w tym wypadku wyłapać adres wyjeżdzający poza tekst.
Przy pomocy wskażników możesz tworzyć tzw. zmienne dynamiczne,zmienne te mogą być tworzone i niszczone w trakcie działania programu,gdy stworzysz zwykłego int’a,to ten int jest niszczony dopiero przy wyjściu z funkcji,poczytaj o zmiennych dynamicznych,funkcjach new i delete.Wskażniki mają zastosowanie z listami jedno lub wielokierunkowymi,to takie struktury w których wskażnik wskazuje adres następnego elementu listy,dają wtedy oszczędność pamięci,bo zamiast na stałę deklarować np. tysiąc elementową tablicę,gdzie większość wartości będzie zerami,deklarujemy tyle ile nam w danej chwili potrzeba,a potem dokładamy nowe elementy.
Dla k-wymiarowej tablicy o wymiarach n1, n2, …, nk oraz indeksach i1, i2, …, ik, byłoby to raczej i1 + n1*i2 + n1*n2*i3 + … + n1*n2*…*nk-1*ik (opcjonalnie odwrotnie w zależności, od której strony liczyć wymiary).
Dla 2-wymiarowej tablicy o “szerokości” w oraz indeksach: “poziomym” x i “pionowym” y jest to x + y * w, przy czym tablica ta jest tablicą o wielkości h tablic o wielkości w. W przypadku tablicy o wielkości w tablic o wielkości h wzór ma postać x * h + y, co wychodzi na dokładnie to samo tylko oznaczenia się zmieniają zależnie od przyjętej koncepcji.