相关疑难解决方法(0)

声明C函数以返回数组

如何创建一个返回数组的函数?我试过这个

const int WIDTH=11;
const int HEIGHT=11;

int main() {
  char A[WIDTH][HEIGHT];
  A=rand_grid(WIDTH,HEIGHT);
  return 0;
}

// Initializes a random board.
char[][] rand_grid(int i, int k) {
  char* A[i][k];
  for(j=0;j<i;++j) {
    for(l=0;l<k;++l) {
      A[j][l]=ran(10);
    }
  }
  return A;
}

// Returns a random number from the set {0,...,9}.
int ran(int i) {
  srand((unsigned int) time(0));
  return(rand()%10);
}
Run Code Online (Sandbox Code Playgroud)

c

46
推荐指数
3
解决办法
9万
查看次数

使用数组成员包装C结构以便在python中访问:SWIG?用Cython?ctypes的?

我想访问一个C函数,它返回一个包含double数组的结构(其中这些数组的长度由结构的其他int成员给出)来自python.声明是

typedef struct {
  int dim;
  int vertices;
  int quadrature_degree;
  int polynomial_degree;
  int ngi;
  int quadrature_familiy;
  double *weight; /* 1D: ngi */
  double *l;      /* 2D: ngi * dim */
  double *n;      /* 2D: ngi * vertices */
  double *dn;     /* 3D: ngi * vertices * dim */
} element;

extern void get_element(int dim, int vertices, int quad_degree, int poly_degree, element* e);
Run Code Online (Sandbox Code Playgroud)

重要的是我希望能够以double*正确形状的NumPy数组访问所有成员(即dn应该可以作为3D数组访问).

简单地SWIG包装这给了我很好的结构,但所有double*成员都<Swig Object of type 'double *' at 0x348c8a0>使它们无用.我玩过NumPy SWIG接口文件,但无法使任何类型的图像 …

c python swig struct cython

12
推荐指数
2
解决办法
3587
查看次数

标签 统计

c ×2

cython ×1

python ×1

struct ×1

swig ×1