Поля и указатели
Обращение к полям
Оператор .(точка) применяется для получения или установки значения поля или для вызова метода или свойства. После точки необходимо указать имя поля или свойства. В случае вызова метода необходимо в круглых скобках указать параметры.
type customer
{
str name, last_name
uint age
arrstr phones[ 5 ]
}
...
customer cust1
cust1.name = "Tom"
cust1.age = 30
cust1.phones[ 0 ] = "3332244"
cust1.process()
Адреса и указатели
Унарный оператор & позволяет получить адрес локальной или глобальной переменной или идентификатор функции. Результат операции имеет тип uint. Если результатом какой-то операции является объект, например функция возвращающая строку, то к данному подвыражению также можно применить операцию взятия адреса. Оператор & примененный к объекту (структуре) возвращает адрес данного объекта и служит для приведения типа к uint.
uint a b
str mystr
...
a = &mystr
b = &getsomestr
b->func( a ) // equals getsomestr( mystr )
Для получения значения по адресу необходимо использовать оператор ->. Правым операндом должно быть имя числового типа, а левый операнд должен указывать на значение соответствующего числового типа.
int a = 10, b
uint addra
addra = &a
b = addra->int // b = 10
addra->int = 3 // a = 3
Операция взятия элемента объекта
Многие структуры или объекты могут содержать в себе элементы других типов. Для доступа к элементам объекта ( элементы массива, символы строки ) можно использовать квадратные скобки [ ]. Если объект является многомерным, то размерности разделяются запятыми. Отсчёт элементов начинается с нуля. Для того чтобы к переменной можно было применить данную операцию тип переменной должен иметь соответствующие методы index. Подробнее смотрите на странице Системные методы для типов.
arr myarr[ 10, 10, 10] of byte
str mystr = "abcdef"
myarr[ i, k+3, 4 ] = 'd'
myarr[ 0, 0, 0 ] = mystr[i]