PostgreSQL использует изменяемую структуру C - поэтому первые n байтов содержат данные фиксированной длины, а следующие байты используются для данных.Первые четыре байта содержат длину, число следов затемнения, смещение данных и идентификацию типа данных элемента - следующие данные должны быть растровым изображением, содержащим значения NULL, и после этого данные растрового изображения сериализуются.
Массив PostgreSQL не совместим с массивами C - соответственнов некоторых случаях массив C является частью массива PostgreSQL.ARR_DATA_PTR может или не должен ссылаться на реальные данные.Зависит от текущего состояния - данные должны быть поджаренными, очищенными, ...
Люди обычно используют макросы и вспомогательные функции при работе с массивами pg.Есть способы распаковки в массивы C или итерации по массиву pg.