Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.15. Работа с матрицами и массивами
А.5.15.5. Макрос RDS_ARRAYITEMADDR – указатель на элемент матрицы с заданными индексами
Макрос RDS_ARRAYITEMADDR возвращает указатель на элемент статической или динамической переменной блока, являющейся матрицей или массивом, с указанными в параметрах индексами. Он может использоваться только вместе со структурой RDS_ARRAYACCESSDATA.
RDS_ARRAYITEMADDR(
acc, // Указатель на структуру описания
r, // Строка
c // Столбец
)
Определение
#define RDS_ARRAYITEMADDR(acc,r,c) \ ( ((char*)((acc)->Data)) + \ ((r)*((acc)->Cols)+(c))*((acc)->ItemSize) )
Параметры
- acc (RDS_ARRAYACCESSDATA*)
- Указатель на структуру описания матрицы RDS_ARRAYACCESSDATA.
- r, c (целые)
- Строка (r) и столбец (c) элемента, нумерация начинается с нуля.
Возвращаемое значение
Указатель на элемент матрицы, описываемой структурой acc. Тип этого указателя не соответствует фактическому типу элемента, поэтому приведение типов необходимо выполнить явно.
Примечания
Для использования этого макроса необходимо иметь заполненную структуру описания матрицы RDS_ARRAYACCESSDATA (указатель на нее передается во втором параметре макроса). Используя поля этой структуры, макрос вычисляет указатель на элемент с индексами r и c. В отличие от макроса RDS_ARRAYITEM, он может применяться и для матриц сложных переменных, поскольку возвращает только указатель на элемент, не выполняя взятие содержимого этого указателя.
Массивы в RDS хранятся в памяти так же, как и матрицы, поэтому этот макрос можно применять как для матриц, так и для массивов – в массиве в качестве номера строки всегда следует передавать 0.
См. также