Я прочитал официальный ctypes учебник, а также обыскал SO, но не смог найти способ объявить эту структуру с помощью ctypes. Эта структура возвращается одной из функций, которые я пишу для интерфейса Python для.
typedef struct{
int i;
float *b1;
float (*w1)[];
}foo;
Это то, что у меня есть до сих пор:
class foo(Structure):
_fields_=[("i",c_int),
("b1",POINTER(c_int)),
("w1",?????????)]
Спасибо за вашу помощь!
В C указатель на массив хранит тот же адрес памяти, что и указатель на первый элемент в массиве. Поэтому:
class foo(Structure):
_fields_=[("i",c_int),
("b1",POINTER(c_int)),
("w1",POINTER(c_float))]
Вы можете получить доступ к элементам массива с помощью целых индексов. Например: myfoo.w1[5]
.
Лучше C стиль кодирования объявить w1
как float *w1
, чтобы вы могли обращаться к элементам массива с помощью myfoo->w1[5]
вместо того, чтобы дважды выполнять разыгрывание.