Otevřít hlavní menu

Změny

@

Přidáno 2 833 bajtů, 9. 10. 2012, 23:08
Vytvorená stránka „Operátor @: Operace s ukazatelem Operátor @ pomáhá vytvořit ukazatel na proměnnou nebo funkci. Operátor Operace Typ o...“
Operátor @: Operace s ukazatelem

Operátor @ pomáhá vytvořit ukazatel na proměnnou nebo funkci.

Operátor Operace Typ operandů Typ výsledku
—————————— ——————————— ——————————————————————— ——————————————————
@ vytvoření odkaz na proměnnou, Pointer (jako
ukazatele nebo identifikátor hodnota nil)
funkce nebo procedury

@ je unární operátor. Pro použití operátoru @ s procedurální proměnou existují speciální pravidla. Typ hodnoty je stejný jako typ hodnoty [[nil]], takže může být přiřazena k libovolné proměnné typu ukazatel.

;@ s proměnnou
Použití operátoru @ s běžnou proměnnou (nikoli parametrem) je jednoduché.

;Například, mějme tyto deklarace:

type
DvaZnaky = array[0..1] of Char;
var
Int: Integer;
DvaZnakyPtr: ^DvaZnaky;

pak tento příkaz způsobí, že DvaZnakyPtr ukazuje na Int:

DvaZnakyPtr := @Int;

DvaZnakyPtr^ se stanou novou interpretací hodnoty v proměnné [[Int]], jako kdyby to bylo pole [[array]][0..1] of [[Char]].


;Operátor @ s parametrem předávaným hodnotou
Pokud použijete operátor @ s formálním hodnotovým parametrem, dostanete adresu, na které je hodnota parametru uložená v prostoru zásobníku.

Například, mějme formální hodnotový parametr Fred v proceduře a proměnnou FredPtr typu ukazatel.


Jestliže procedura provede příkaz

FredPtr := @Fred;

pak FredPtr^ se odkazuje na hodnotu Fred.


FredPtr^ se ovšem nevztahuje k vlastnímu parametru Fred, ale k hodnotě, kterou procedura dostala přes Fred a uložila na zásobník.


;Operátor @ s parametrem předávaným odkazem
Pokud použijete @ s formálním parametrem volaným odkazem, dostanete přímo adresu skutečného parametru (přečtenou ze zásobníku).


;Například:
* One je parametr procedury volaný odkazem.
* Two je proměnná, předávaná do procedury jako skutečný parametr parametru One.
* OnePtr je proměnná typu ukazatel.

Pak, jestliže procedura provede příkaz

OnePtr := @One;

OnePtr je ukazatel na Two, a OnePtr^ je odkaz na vlastní proměnnou Two.


;Operátor @ s procedurou nebo funkcí
Operátor @ můžete také použít s procedurou nebo funkcí a v tom případě dostanete ukazatel na jejich vstupní bod. Turbo Pascal ale nemá prostředky pro jeho využití.

Jediné použití procedurálního ukazatele je předat ho do assemblerovské procedury nebo použití v příkazu [[inline]].


;Operátor @ s metodou
Operátor @ můžete použít s kvalifikovaným identifikátorem metody k získání ukazatele na vstupní bod metody.

[[Category:Typové konstanty]]