Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.15. Работа с матрицами и массивами

А.5.15.4. Макрос RDS_ARRAYITEM – элемент матрицы с заданными индексами

Макрос RDS_ARRAYITEM возвращает элемент статической или динамической переменной блока, являющейся матрицей или массивом, с указанными в параметрах индексами. Он может использоваться только для матриц и массивов простых переменных и только вместе со структурой RDS_ARRAYACCESSDATA.

  RDS_ARRAYITEM(
    type,    // Тип элемента
    acc,     // Указатель на структуру описания
    r,       // Строка
    c        // Столбец
  )

Определение

  #define RDS_ARRAYITEM(type,acc,r,c) \
    ( *((type *)RDS_ARRAYITEMADDR(acc,r,c)) )

Параметры

type (имя типа)
Простой тип элемента матрицы/массива (double, int и т.д.).
acc (RDS_ARRAYACCESSDATA*)
Указатель на структуру описания матрицы RDS_ARRAYACCESSDATA.
rc (целые)
Строка (r) и столбец (c) элемента, нумерация начинается с нуля.

Возвращаемое значение

Значение элемента матрицы, описываемой структурой acc. Это значение может использоваться как в правой, так и в левой (lvalue) части выражений.

Примечания

Для использования этого макроса необходимо иметь заполненную структуру описания матрицы RDS_ARRAYACCESSDATA (указатель на нее передается во втором параметре макроса). Сам макрос определен через другой макрос – RDS_ARRAYITEMADDR – который возвращает указатель на данные элемента матрицы с указанным номером. Этот адрес затем приводится к типу «указатель на type», после чего оператором * берется его содержимое (именно поэтому этот макрос можно использовать только для матриц, элементы которых имеют простой тип, совпадающий с одним из типов языка C). Массивы в RDS хранятся в памяти так же, как и матрицы, поэтому этот макрос можно применять как для матриц, так и для массивов – в массиве в качестве номера строки всегда следует передавать 0.

Пример

Пример использования RDS_ARRAYITEM приведен в §2.5.3 руководства программиста.

См. также

RDS_ARRAYACCESSDATA, RDS_ARRAYITEMADDR.


<< >> Оглавление Указатель