colobot-data/help/cbot/R/array.txt

32 lines
2.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\b;Массивы
Массив - это в основном набор переменных того же типа и класса. Вы можете использовать н-ное количество массивов в языке CBOT, однако максимальный размер массива равен 9999 элементов. Вы должны использовать квадратные скобки \c;[]\n; после того, как объявили массив.
\c;
\s;int [ ] a; // целочисленный массив
\s;int a [12]; // целочисленный массив, где максимум 12 элементов
\s;string s[3]; // массив с тремя строчками
\s;float xy[][]; // двумерный массив плавающей запятой
\n;
На самом деле, когда компилятор CBOT встречает объявление массива, то он просто создает \c;\l;null\u cbot\null;\n; \l;ссылку\u cbot\pointer;:
\c;
\s;int a[5]; // просто пустая ссылка
\n;
Как только вы поместите значения в массив, элементы создаются и ссылки инициализируются:
\c;
\s;a[2] = 213; // указывает на
\s; // три элемента [0], [1] и [2]
\n;
После этой операции, \c;a\n; содержит ссылки на элементы массива. Элементы \c;[0]\n; и \c;[1]\n; созданы, однако не инициализированы, т.к. они пусты. Инструкция \c;\l;sizeof\u cbot\sizeof;\n; позволяет получить число элементов, хранящихся в массиве.
Если массив объявлен с максимальным размером, то программа остановится, как только доступ к нему выйдет за его рамки(т.е. кол-во элементов+N). При компиляции ошибки не возникнет, даже если она очевидна:
\c;
\s;{
\s; int a[5];
\s; a[7] = 123; // нет ошибки при компиляции
\s; // однако ошибка при выполнении
\s;}
\n;
Если вы передаете \l;функции\u cbot\function; массив в качестве параметра, то функция получает только \l;ссылку\u cbot\pointer; на массив. Это означает, что если вы измение элемент в массиве, то этот элемент будет измененным и в самой функции.
\t;См. также
\l;Язык CBOT\u cbot; и \l;Переменные\u cbot\type; и \l;категории\u cbot\category;.