\b;Zeiger (für Spezialisten)
CBOT benutzt Zeiger für \l;Klassen\u cbot\class; und \l;Arrays\u cbot\array;. Jede Klassenvariable enthält einen Zeiger zu einer Instanz der Klasse. Mehrere Zeiger können auf die gleiche Instanz weisen. Wenn eine Variable auf keine Instanz weist, enthält sie den Wert \c;\l;null\u cbot\null;\n;. Sie können Instanzen mit einem Koffer und einen Zeiger mit einem Träger vergleichen. Jedes Mal wenn wir einen neuen Koffer (Instanz) brauchen, brauchen wir einen neuen Träger (Zeiger). Ein Koffer kann jedoch von mehr als einem Träger getragen werden. Ein Träger ohne Koffer ist ein \c;\l;null\u cbot\null;\n;-Zeiger.

Beispiel:
\c;\s;{
\s;	MyClass item1(); // erstellt eine neue Instanz
\s;	                 // auf die von item1 verwiesen wird
\s;	MyClass item2;   // erstellt einen null-Zeiger
\s;	item2 = item1;   // kopiert den Zeiger,
\s;	                 // item2 und item1 weisen nun
\s;	                 // auf die gleiche Instanz
\s;	item1.a = 12;    // verändert die Instanz, auf die
\s;	                 // item1 (und item2) zeigen
\s;	message(item2.a);// zeigt 12 an
\s;}
\n;
Wenn Sie eine Instanz einer \l;Klasse\u cbot\class; als Parameter einer Funktion übergeben, erhält die Funktion nur einen Zeiger auf die Instanz. Wenn die Instanz also in der Funktion verändert wird, wird sie auch in der Funktion verändert, die die Instanz als Parameter übergeben hat.

\c;\s;void Test( MyClass item )
\s;{
\s;	item.a = 12;          // verändert die ursprüngliche Instanz
\s;	item = new MyClass(); // neue lokale Instanz
\s;	item.a = 33;          // verändert die lokale Instanz
\s;}
\n;
Ruft die Funktion \c;Test()\n;:
\c;\s;{
\s;	MyClass toto();
\s;	Test(toto);
\s;	message(toto.a);  // zeigt 12 an
\s;}
\n;
Nur die in der Funktion \c;Test\n; neu erstellte Instanz \c;item\n; enthält die Variable \c;a = 33\n;. Am Ende der Funktion \c;Test\n; wird diese neu erstellte Instanz automatisch gelöscht.

Eine Funktion kann auch eine Instanz zurückgeben:
\c;\s;MyClass Test2( )
\s;{
\s;	MyClass item = new MyClass();
\s;	item.x = 33;
\s;	return item;
\s;}
\n;
Rufen Sie diese Funktion folgendermaßen auf:
\c;\s;{
\s;	MyClass toto;
\s;	toto = Test2(); // toto enthält einen Zeiger auf die
\s;	                // von Test2() erstellte Instanz
\s;	message(toto.a); // zeigt 33 an
\s;}
\n;
\t;Siehe auch
\c;\l;Klassen\u cbot\class;\n;, \c;\l;new\u cbot\new;\n;.
Die \l;CBOT-Sprache\u cbot;, \l;Variablentypen\u cbot\type; und \l;Kategorien\u cbot\category;.
