Массивы и строки
Язык поддерживает одномерные и многомерные массивы. Индексация начинается с 0 элемента. Массив представляет собой последовательность 32-битных слов, доступ к которым осуществляется с помощью квадратных скобок []. Каждое слово состоит из 4 байтов, поэтому для сокращения использования памяти, можно использовать побайтовый доступ с помощью фигурных скобок {}, что позволяет использовать массив как последовательность байт. Также как и обычные переменные массив может быть объявлен как константа и/или быть инициализированным.
const PORT_BUF_SIZE = 245
new oBuf{PORT_BUF_SIZE} //Обяъвление массива, размером 245 байт, занимающий в памяти 245/4 => 62 элемента (32-битных слова)
new cBuf[10] //Объявление массива размером 10 элементов (32-битных слов), т.е 10*4 => 40 байт
new const fMap_fAttr[2] = [0x20000, 0x50000] //Объявление постоянного массива с его инициализацие
Примеры доступа к элементам массива:
oBuf{0} = 2 //Присвоение 0-му байту массива значения 2
oBuf[1] = 0x5028100 //Присвоение 1-му элементу того же массива значения 0x5028100, что будет эквивалентно следующим действиям:
//oBuf{4} = 0x05
//oBuf{5} = 0x02
//oBuf{6} = 0x81
//oBuf{7} = 0x00
cBuf{1} = 0x5 //Эквивалентно следующей записи(внимание, записываются сразу 4 байта): cBuf[0] = 0x000500
Многомерные массивы -это массивы, содержащие в себе ссылки на подмассивы. Каждый подмассив может иметь разную свою длину. Ниже приведены примеры объявления двумерных массивов:
new a[4][3] //4 строки по 3 столбца в каждой
new e[2][] = [ "OK", "Cancel" ] // Двумерный массив с подмассивами различной длины. e[1][5] содержит букву "l", но e[0][5] -недопустимый элемент, т.к длина подмассива равна 3 ("O", "K", "\0")
Для определения размера массива используется оператор sizeof. Этот оператор возвращает количество элементов (32-битных слов), а не байт. Для многомерных массивов вызов данного оператора с именем массива без скобок вернёт главную размерность, со скобками -размерность подмассива:
new matrix[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } }
Diagnostics("%d %d", sizeof matrix, sizeof matrix[]); //В диагностике будет строка 3
Строки представляют собой одномерные массивы.
Автор © Дмитрий сделано на © 2018 uKit
Информация на сайте не является публичной офертой