Dokumentace

Datový typ pointer

Datový typ pointer je rozšířením normy EN 61131 (není v ní definován). Důvodem je bezpečnost programování. Chybné použití pointeru může mít za následek zhroucení programu, což je při řízení technologie nepřípustný stav. Tento typ chyby nelze odhalit ani ve fázi překladu programu, ani za jeho běhu. Na druhou stranu, výhodou pointerů je vyšší efektivnost programovaní. Existuje také skupina úloh, které lze vyřešit jen a pouze použitím pointerů.

Pointer je ukazatel na proměnnou, která může být elementárního nebo odvozeného typu. Jinými slovy: pointer obsahuje adresu proměnné, nikoli její hodnotu. S pointerem se běžně provádí dva druhy operací: Buď lze měnit jeho hodnotu (zvyšovat, snižovat) a tím měnit, na kterou proměnnou pointer ukazuje, nebo lze pracovat s hodnotou proměnné, na kterou pointer ukazuje. První zmíněné operaci se říká pointerová aritmetika, druhá operace se pak označuje jako dereference pointeru.

  • Deklarace se provádí pomocí klíčového slova PTR_TO. Za ním následuje jméno datového typu, na který pointer ukazuje.
  • Inicializace pointeru se provádí pomocí funkce ADR(). Parametrem této funkce je jméno proměnné, jejíž adresu chceme do pointeru naplnit.
  • Dereference pointeru je operace, která umožňuje pracovat s proměnnou, na kterou pointer ukazuje. Pro dereferenci je využíván znak ^. Nutným předpokladem je shoda typu v deklaraci ukazatele a typu proměnné.

Příklad:

VAR
MyPtr: PTR_TO INT;
MyVar: INT;
END_VAR

MyVar:= 100;
MyPtr:= ADR( MyVar); //nastavení ukazatele na proměnnou
MyPtr^:= 200; //v proměnné je nyní nová hodnota 200