在numpy中,您可以使用array.size
和array.shape
访问数组的大小和形状,而可以使用array[i]
访问元素。
如何用C结构实现这一目标?人们可以做类似
的事情struct{
int size;
int shape[2];
int *elements;
} int_array;
但是元素可以作为
访问int_array.elements[i].
不喜欢numpy。
我怎样才能有一个存储大小和形状的数组,但是可以使用[]以常规方式访问其元素?
答案 0 :(得分:2)
3 *
sizeof(int)
。然后您可以通常的方式访问该数组。
在释放之前,不要忘记从指针中减去3 * sizeof(int)
。
答案 1 :(得分:1)
您可以使用简单的宏将指针转换为2D数组(source):
#define INDEX(a) ((int(*)[a.shape[1]]) a.elements)
您可以将其用作
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int size;
int shape[2];
int *elements;
} int_array;
int main() {
int_array arr;
arr.shape[0] = 2;
arr.shape[1] = 3;
arr.elements = malloc(6*sizeof(*arr.elements));
INDEX(arr)[0][1] = 2;
printf("%d", INDEX(arr)[0][1]);
}