Jest też więcej błędów. NP;
for (int i=0; i<ile; i++)
{
cout<<(int)tablica<<endl;
tablica++;
}
delete [] tablica;
tablica=NULL;
Po skompilowaniu program scrashuje. Powód tego jest taki, że linijka "delete [] tablica" oznacza mniej więcej - usuń tablicę zaczynającą się w adresie równym x, gdzie x reprezentuje wskaznik na poczatek tej tablicy. Jak pewnie słyszałeś, bo wydaje mi się, że MZ o tym mówił, nazwa tablicy jest jednocześnie adresem jej pierwszego elementu.
W pętli jednak występuje przesunięcie wskaźnika o ile miejsc w prawo, wskaźnik więc pod sam koniec znajduje się na samym końcu tablicy, nie na początku. Nie można więc usunąć tej tablicy w sposób pokazanych na odcinku.
Zamiast tego należałoby albo zrobić coś takiego:
int * beginptr = tablica; // robimy wskaznik, ktory bedzie trzymał wartość początku tablicy.
for (int i=0; i<ile; i++) // petla rusza wskaznikiem tablica
{
cout<<(int)tablica<<endl;
tablica++;
}
tablica = beginptr; // wskaznik tablica znowu znajduje sie na poczatku
delete [] tablica; // dopiero teraz mozemy usunac tablice w ten sposob.
tablica=NULL;
Inna opcja to po prostu nie ruszac wskaznikiem, a jedynie wskazywac na wartosc na jakiej znajdowalby sie wskaznik po przesunieciu w ten sposób.
for (int i=0; i<ile; i++)
{
cout<<(int)(tablica + i)<<endl; // wypisujemy wartość dla wskaznika przesunietego o i, ale go nie przesuwamy.
}
delete [] tablica;
tablica=NULL;
Generalnie ten odcinek wypada wyjątkowo słabo. Mam wrażenie, że autor trochę ślepo przekonwertował dość kiepski wykład na film, link do wykładu znajduje się na jego stronie: Wyklad
Co do samego kursu, ma on swoje wady i zalety. Najzdrowsze podejście moim zdaniem to uznanie tego kursu C++ nie jako kursu języka, a kursu zrozumienia podstawowych zagadnień obecnych w programowaniu.
Zawiera on wiele złych praktyk, jak np. konsekwentnie używane zmienne globalne.
Mogę cię pocieszyć, że o ile odcinek o wskaźnikach jest dość kiepski i lepiej szukać zrozumienia tego tematu gdzie indziej, to inne filmiki dość dobrze tłumaczą pewne aspekty. Należy jednak zaznaczyć, że tłumaczą to co tłumaczą, bo nie pojawia się tam szereg ważnych rzeczy. Przykładowo w odcinku o konstruktorach i destruktorach nie ma nic o liście inicjalizującej, ani konstruktorach kopiujących. Nie warto też brać się za te odcinki robienia aplikacji okienkowych, bo są przedstawiane na podstawie przestarzałego programu o małych możliwościach.
Nie oznacza to jednak, że kursu nie warto obejrzeć, bo warto. Zawsze to trochę rozjaśnienia sprawy, ale na pewno należy to jeszcze poszerzyć innym, większym kursem, a już najlepiej książką i oczywiście masą praktyki.
Co do samych wskaźników, zrozumiesz je gdy zaczną Ci być potrzebne. Na początku ciężko wyobrazić sobie ich zastosowanie, zwłaszcza, gdy słucha się o miernikach temperatury czy innych bzdurach. Po pewnym czasie jednak zdasz sobie sprawę, że po natrafieniu na konkretny problem pomysł użycia wskaźnika sama wpadnie ci do głowy. Nie nastąpi to jednak raczej wcześniej, niż przy robieniu programów obiektowo, a do tego czasu przydadzą Ci się one (wskaźniki) raczej tylko do inicjalizowania tablic o rozmiarach określanych podczas działania programu.