Witam, czytam książkę o C++ Praty.
Zakończyłem rozdział o wskaźnikach i aby utrwalić zdobytą wiedzę napisałem kilka programów, ale w jednym
przypadku spotkałem się z innym rezultatem od zakładanego i nie potrafię tego wytłumaczyć.
Założenie jest takie, piszę dwa programy, w pierwszym tworzę zmienną i sprawdzam adres pod jakim zmienna
została utworzona .
W drugim programie tworzę wskaźnik i przypisuję do niego adres zmiennej utworzonej w pierwszym programie.
Kod pierwszego programu.
#include <iostream>
using namespace std;
int main()
{
int a=125;
cout<<&a<<endl; //sprawdzam adres zmiennej a.
cin>>a; // aby program nie zakonczyl dzialania.
}
Pierwszy program cały czas działa , a ja w drugim do wskaźnika przypisuję adres zmiennej a i odpalam program.
Kod drugiego programu .
#include <iostream>
using namespace std;
int main()
{
int *ws;
ws=(int *)0x22fefc; //przypisuje do wskaznika adres pod
// którym pierwszy program zapisal zmienna a .
cout<<*ws<<endl;
}
Problem jest taki że zamiast w drugim programie wyświetlić wartość zmiennej a zostaje wyświetlona jakaś
przypadkowa liczba . Czemu tak?
Skoro wskaźnik wskazuje adres pod którym została utworzona zmienna a więc czemu drugi program nie wyświetla 125 tylko jakieś śmieci .