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

32 lines
2.8 KiB
Plaintext
Raw Normal View History

\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;.