簡體   English   中英

如何用ctypes中的數組聲明一個C結構?

[英]How to declare a C struct with a pointer to array in ctypes?

我閱讀了官方的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]

w1聲明為float *w1會是更好的C編碼風格,這樣您就可以使用myfoo->w1[5]訪問數組的元素,而不必兩次取消引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM