|
 | | |
| Autor | Správa |
Loko11
 Užívateľ
 Založený: 21.07.2007 Príspevky: 75
 | Zaslal: Po 22.12.08 17:40 |   |
caute, mam taky problem, ak sa nemylim, adresa premennej sa oznacuje znakom @ pred nazvom premennej, ale ako zistim hodnotu v danej adrese, ak je pod vstupom napr Data:integer, t.j. ked mam premennu typu Pointer; |
| |
  |
 |
programator
 Užívateľ
 Založený: 02.09.2005 Príspevky: 156
 | Zaslal: Po 22.12.08 23:49 |   |
Obecne je premennu typu pointer mozne rozdelit do dvoch kategorii:
1. Typovy pointer (napr. typu ^Char, ^Byte, ^String, ...)
2. Netypovy pointer (typu Pointer)
Cize pokial je zname, na ake data sa bude ukazovat (popr. data akej velkosti), je vhodne pouzit typovy pointer, v opacnom pripade netypovy pointer.
Hodnota pointera sa zisti jednoducho pridanim znaku ^ za nazov premennej typu pointer. Pri netypovych pointeroch je ale potrebne kompilatoru uvadzat hodnotu s tzv. pretypovanim, kolko byte sa ma nacitat, pretoze by to inak nevedel urcit.
(napr. Byte(P^) - nacita z pamate 1B, ...).
Ale aby som uviedol odpoved na tvoju otazku, riesenie je nasledovne :
| kód: | var
Data: Integer;
P: Pointer;
begin
P := @Data;
{ vypis obsahu premennej Data }
Writeln(Integer(P^));
end. |
Pri pouziti typoveho pointera by bolo riesenie nasledovne:
| kód: | type
PInteger = ^Integer;
var
Data: Integer;
P: PInteger;
begin
P := @Data;
{ vypis obsahu premennej Data }
Writeln(P^);
end. |
|
_________________ Múdry nie je ten, čo veľa vie, ale ten, kto vie, čo je treba. (Thomas Alva Edison) | |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
| |