Problem z Pointerami

0

var
P:Pointer;
I:Integer;
begin
I:=Integer(@P); lub Integer(P) lub Integer(P^)
ShowMessage(inttostr(I));
end;

co zostanie wyświetlone za każdym razem?? [???] [???] [???]

0

To sobie odpal Delphi i sprawdź :-P

PS: nic, bo nie zadeklarowałeś wartości

0

już sprawdzałem B-|
i najbardziej mnie interesuje sytuacja z Integer(P) co to za liczba???
bo jak podejrzewam to @P to adres tego wskaznika ,a P^ to jakas przypadkowa liczba bo nie przypisalem nic pointerowi......

0

już sprawdzałem B-|
i najbardziej mnie interesuje sytuacja z Integer(P) co to za liczba???
bo jak podejrzewam to @P to adres tego wskaznika ,a P^ to jakas przypadkowa liczba bo nie przypisalem nic pointerowi......

P to wskaznik na P^, czyli przypadkowy wskaznik na przypadkowy obszar pamieci

0

Integer(@P) - wskaźnik na wskaźnik :)
Integer(P) - offset w pamięci, na który wskazuje zmienna
Integer(P^) - dane, na które wskazuje
Jeśli nic nie przypiszesz, zawartość zmiennej będzie zależała od jednego czynnika: jeśli to jest zmienna globalna, początkowa wartość wyniesie 0 (czyli będzie to wskaźnik na początek pamięci). Jeśli to zmienna lokalna - jej zawartość będzie nieprzewidywalna, tak samo jak skutki użycia tego wskaźnika. Tzn. pod Windowsem są przewidywalne - wyjątek "Access Violation at address [tu zawartość zmiennej]" i tyle. Gdyby to było w TP - prawdopodobnie miałbyś piękny zwis całego komputera - jest duże prawdopodobieńswo, że liczba przypadkowo zawarta we wskaźniku jest większa niż rozmiar całej pamięci a jeśli system nie wyłapie błędnego wywołania (DOS na pewno nie), elektonika może całkiem zgłupieć i się zaciąć....

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