• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ wskaźniki

Object Storage Arubacloud
0 głosów
207 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez Biafra Nowicjusz (200 p.)
Mam proste pytanie. Na podstawie filmiku https://www.youtube.com/watch?v=0DQl74alJzw w minucie 18:00

Jaka wartość znajduje się w zmiennej *wskaznik, w momencie gdy piszemy:

int *wskaznik = tablica;.

Z tego co zrozumiałem gdy mamy

- *wskaznik  to zwraca nam to co pod adresem wskaznika sie znajduje tzn. jakas wartosc

a gdy mamy &wskaznik to zwraca nam po prostu adres wskaznika tak?

 

W takim razie co znajduje sie w *wskaznik, w momencie gdy piszemy: int *wskaznik = tablica; skoro w pierwszym elemencie tablica na razie jeszcze nie ma żadnej wartości?

 

Gdy użyje cout<<*wskaznik; po linijce kodu z int *wskaznik = tablica; pokazuje mi za każdym razem inne, wysokie liczby typu 12587824.

1 odpowiedź

0 głosów
odpowiedź 17 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
randomowe liczby, ktore zostaly w pamieci RAM po innym programie.
komentarz 17 maja 2017 przez Biafra Nowicjusz (200 p.)

No i wlasnie to mnie dziwi skoro * sluzy do wypisania tego na co wskaznik wskazuje czyli jakiejs wartości, a nie adresu, to czemu przypisuje do niego wlasnie adres pierwszego elementu tablicy, a nie jakąś wartość

Ale dzięki, musze jeszcze o tym poczytać

komentarz 17 maja 2017 przez Biafra Nowicjusz (200 p.)
Jeszcze a propo tego co napisałeś

"Gdybys napisal: cout<<wskaznik; to wtedy wypisze ci adres tab[0]; "

To na logike powinno się robić zamiast int *wskaznik = tablica;

int wskaznik = tablica, skoro przypisujemy własnie adres a nie wartosc

i pozniej zeby wypisac wartosc mozna uzyc *
komentarz 17 maja 2017 przez Biafra Nowicjusz (200 p.)
Dobra juz chyba kminie.

Zapis: int *wskaznik = tablica; jest swego rodzaje skrótem który niestety powoduje zamieszanie.

Zamiast tego zapisu można zrobić tak:

Najpierw stworzyć wskaźnik czyli: int *wskaznik;

a dopiero pozniej przypisac adres juz bez * czyli:

wskaznik = tablica;

co już jest dużo bardziej logiczne :)

bo przypisujemy temu co wskazuje adres (wskaznik) adres (tablica) a nie jak w tym skrótwoym zapisie :

temu co wskazuje na wartość pod adresem (*wskaznik) adres(tablica).
komentarz 17 maja 2017 przez NaviFox Dyskutant (8,950 p.)
*wzkaznik == wartość wskazywana

wskaznik == adres wskazywanej wartości

&wskaznik == adres wskaznika

 

*wskaznik nie wskazuje na nic. wskaznik wskazuje na obszar w pamięci a dzięki operatorowi wyłuskania * możemy sięgnąć do tej wartości tak jakbyśmy posługiwali się samą zmienną posiadającą tą wartość.

 

W procesie kompilacji, kompilator przypisuje tablicy jakieś miejsce w pamięci, na to miejsce wskazuje nasz wskaźnik. Za każdym razem kiedy uruchomisz program wskaznik będzie wskazywał na inną wartość liczbową ponieważ pamięć RAM nie czeka na ciebie z ciągle tym samym miejscem w pamięci.

 

W naszym przypadku zwalniamy miejsce w pamięci zaalokowane wcześniej dla tablicy na które wskazuje nasz wskaznik a więc tablica staje się niezainicjowana, w takim wypadku wartość przechowywana przez zadeklarowaną tablicę jak i *wskaznik jest nieokreślona i może być dowolną wartością liczbową od MIN_INT do MAX_INT.
komentarz 17 maja 2017 przez Biafra Nowicjusz (200 p.)
Ok dzięki za pomoc chłopaki:)

Podobne pytania

0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 25 stycznia 2022 w C i C++ przez Author[] Gaduła (3,130 p.)
0 głosów
1 odpowiedź 673 wizyt
pytanie zadane 30 kwietnia 2020 w C i C++ przez Eriss69 Gaduła (4,470 p.)
0 głosów
1 odpowiedź 858 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...