Wskazniki C++ - mam zagwozdkę

0

Dzien dobry.Czemu "program" nie pozwala mi na zarezerwowanie jeszcze raz pamięci skoro poprzednią rezerwacje usunąłem.

nr1.png

I kolejne pytanie.

&wiek wypisuje adres ale CZEMU samo wiek bez tego --> & tez wypisuje adres,inny?

nr2.png

5

Wklejaj kod jako kod, a nie obrazki. Ogółem: https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/

Dodatkowa przydatna lektura: https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

  1. Próbujesz zdefiniować nową zmienną o podanej nazwie w tym samym zakresie. Tego zrobić nie wolno, ale możesz przypisać wartość do już istniejącej zmiennej (wskaźnik to też zmienna)

  2. Wskaźnik to też obiekt/zmienna. Ma swój adres, który jest różny od adresu, na który wskazuje.

4

Bo Ty zmienną jeszcze raz próbujesz utworzyć, a nie przypisać do niej coś nowego.

0
kq napisał(a):

Wklejaj kod jako kod, a nie obrazki. Ogółem: https://dsp.krzaq.cc/post/445/jak-zadawac-pytania-na-forum/

Dodatkowa przydatna lektura: https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

  1. Próbujesz zdefiniować nową zmienną o podanej nazwie w tym samym zakresie. Tego zrobić nie wolno, ale możesz przypisać wartość do już istniejącej zmiennej (wskaźnik to też zmienna)

  2. Wskaźnik to też obiekt/zmienna. Ma swój adres, który jest różny od adresu, na który wskazuje.

Okej będę wstawiac tekst w postaci kodu.

1.Czyli delete usuwa adres zarezerwowany dla zmiennych wskaznika a nie sam wskaznik.Wskaznik zostaje.Wskaznik i jego adres ?
2."wiek" pokazuje adres przypisanej wartosci do wskaznika a "&wiek" pokazuje adres samego wskaznika czy na odwrot ?

1

Tak i tak. :​)

Przy czym to pierwsze trochę nieprecyzyjne. delete zwalnia pamięć, która była zaalokowana i na którą wskazywał ten wskaźnik.

2

Jeszcze dodam, że new[] idzie w parze z delete[].

0
YooSy napisał(a):

Jeszcze dodam, że new[] idzie w parze z delete[].

W tych nawiasach przy delete nie musze wpisywac ilosci elementow? jezeli np uzylem

int *wiek=new int[10];

i potem

delete[] wiek;  czy   delete[10] wiek;
0

Nie musisz, a nawet nie możesz. Ale jeśli chodzi o new/delete to polecam mój wpis na blogu oraz jakieś kursy w przypadku poszerzania wiedzy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1