Skocz do zawartości

Malutki Problemik


LyanVu

Rekomendowane odpowiedzi

Witam, przejdę do sedna.

to jest wskaźnik na obiekt klasy cEnemy:

 

cEnemy* pEnemy;

 

No dobra, ale niby jaki obiekt?!

 

załóżmy, że stworzę sobie 5 obiektów klasy cEnemy. a pozniej ten wskaźnik, to na co on niby wskazuje? (ni chu..chu.. tych cholernych wskaźników nie czaje.

Odnośnik do komentarza
Udostępnij na innych stronach

Krótki przykład:

int punkty = 3; // tworzymy zmienna i nadajemy jej wartosc
int * pointer = &punkty; // tworzymy wskaźnik i każemy mu wskazywać na adres zmiennej punkty
cout << *pointer << endl; // wypisujemy sobie wartość wskaźnika pointer
punkty = 14; // zmieniamy zawartość zmiennej punkty
cout << *pointer << endl; // i ponownie wypisujemy wartość wskaźnika

W konsoli powinieneś zobaczyć: 3 i 14.

Zauważ, że wartość zmiennej punkty zmieniła się dwa razy, a wskaźnik na zmienną ustawiliśmy tylko raz.

Więc dlaczego wypisało nawet zmienioną zawartość zmiennej punkty ?

Bo wskazuje na adres komórki pamięci w której zmienna punkty jest przechowywana.

Ale to jeszcze nie wszystko, teraz za pomocą wskaźnika pointer możesz manipulować zmienną punkty:

*pointer = 7; // w tej chwili wartość zmiennej punkty zmieni się z 14 na 7
// sprawdźmy to wypisując jej zawartość
cout << punkty << endl;

 

W konsoli powinieneś ujrzeć liczbe 7.

Jest jeszcze sporo zastosowań dla wskaźników, ale to raczej nauczysz się o nich później.

Musisz pamiętać kilka rzeczy:

1.Żeby dostać się wartości zmiennej na jaką wskazuje wskaźnik musisz poprzedzić nazwe tego wskaźnika gwiazdką.

2.Wskaźnik nie przyjmuje żadnych innych wartości niż adres komórki pamięci.

3.Wskaźnikiem możesz manipulować dowolną zmienną.

4.Do wskaźnika możesz przypisać dowolną zmienną tylko jeśli są tego samego typu ( są od tego jeszcze wyjątki, ale nie chce Ci mieszać ).

No, może coś tam jeszcze by się wymyśliło, ale na kursie/w książce na 100% to pisze, a ty i tak musisz poćwiczyć.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak stworzysz pięć obiektów klasy cEnemy, a później wskaźnik to on nie wskazuje na nic. Dopiero musisz mu coś "wskazać". :)

 

Hmmm... to nie do końca prawda, on zawsze na coś wskazuje, dlatego najlepiej jest przypisać mu na samym początku wartość NULL, żeby uniknąć komplikacji. W momencie tworzenia jakiejkolwiek zmiennej bądź wskaźnika, zostaje jej/mu nadana automatycznie wartość ( i niestety nie taka, jakiej byśmy się spodziewali).

Odnośnik do komentarza
Udostępnij na innych stronach

No tak, ale to są śmieci, więc wystarczy, że pamięta, iż musi coś "wskazać". A wartość zmiennej nie jest nawet tyle co nadawana automatycznie, a po prostu pozostałość po czymś co wykorzystywało ten obszar pamięci, który zarezerwowaliśmy dla zmiennej. ;)

 

Poza tym, chyba teraz większość kompilatorów już w tej kwestii jest na tyle zautomatyzowana, że sama wszystko zeruje.

Miej dobre nawyki, LyanVu, mimo wszystko. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

No tak, ale to są śmieci, więc wystarczy, że pamięta, iż musi coś "wskazać". A wartość zmiennej nie jest nawet tyle co nadawana automatycznie, a po prostu pozostałość po czymś co wykorzystywało ten obszar pamięci, który zarezerwowaliśmy dla zmiennej. ;)

 

Poza tym, chyba teraz większość kompilatorów już w tej kwestii jest na tyle zautomatyzowana, że sama wszystko zeruje.

Miej dobre nawyki, LyanVu, mimo wszystko. ;)

+1

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...