\b;Ukazatelé (pro pokročilé)
CBOT využívá ukazatele pro práci s \l;třídami\u cbot\class; a \l;poli\u cbot\array;. Každá proměnná s některou třídou jako datovým typem je ve skutečnosti ukazatel na instanci. Samotná instance pak obsahuje jednotlivé atributy třídy. Na jednu instanci třídy může ukazovat více ukazatelů. Speciální hodnota \c;\l;null\u cbot\null;\n; představuje prázdný ukazatel. Instanci třídy si můžete představit jako kufřík a ukazatel jako nosiče. Pokaždé, když potřebujeme nový kufřík, vytvoříme novou instanci s vlastním nosičem. Ale stejný kufřík může držet několik nosičů zároveň. Nosič bez kufříku je ukazatel s hodnotou \c;\l;null\u cbot\null;\n;.

Příklad:
\c;\s;{
\s;	MyClass item1(); // vytvoří novou instanci
\s;	                 // a odkaz na ni uloží do item1
\s;	MyClass item2;   // vytvoří ukazatel s hodnotou null
\s;	item2 = item1;   // zkopíruje odkaz,
\s;	                 // item2 i item1 budou ukazovat
\s;	                 // na stejnou instanci
\s;	item1.a = 12;    // změní obsah instance,
\s;	                 // na kterou ukazuje item1 (a item2)
\s;	message(item2.a);// vypíše: 12
\s;}
\n;
Když instanci \l;třídy\u cbot\class; předáte jako parametr funkci, daná funkce dostane pouze ukazatel na tuto instanci. To znamená, že když obsah instance změníte uvnitř funkce, přepíšete tím obsah původní instance, která existuje mimo funkci.

\c;\s;void Test( MyClass item )
\s;{
\s;	item.a = 12;          // změní obsah původní instance
\s;	item = new MyClass(); // nová lokální instance
\s;	item.a = 33;          // změní obsah lokální instance
\s;}
\n;
Když funkci \c;Test()\n; zavoláme:
\c;\s;{
\s;	MyClass toto();
\s;	Test(toto);
\s;	message(toto.a);  // vypíše: 12
\s;}
\n;
Na nově vytvořenou instanci, která bude obsahovat atribut \c;a = 33\n;, odkazuje pouze jediný ukazatel \c;item\n; uvnitř funkce \c;Test\n;. Na konci funkce \c;Test\n; se tato nová instance automaticky smaže.

Funkce mohou vracet instanci třídy:
\c;\s;MyClass Test2( )
\s;{
\s;	MyClass item = new MyClass();
\s;	item.x = 33;
\s;	return item;
\s;}
\n;
Funkci pak volejte takto:
\c;\s;{
\s;	MyClass toto;
\s;	toto = Test2(); // "toto" bude ukazovat na instanci
\s;	                // vytvořenou uvnitř Test2()
\s;	message(toto.a); // vypíše: 33
\s;}
\n;
\t;Užitečné odkazy
\c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;
\l;Programování\u cbot;, \l;datové typy\u cbot\type; a \l;kategorie\u cbot\category;.
