结构体怎么定义不定长多维数据
时间: 2023-05-11 11:04:47 浏览: 85
在C语言中,可以使用指针和动态内存分配来定义不定长多维数据的结构体。具体实现方法可以参考以下代码:
typedef struct {
int dim; //维数
int *size; //每一维的大小
void *data; //数据指针
} Array;
//创建一个n维数组
Array *createArray(int n, int *size) {
Array *arr = (Array *)malloc(sizeof(Array));
arr->dim = n;
arr->size = (int *)malloc(sizeof(int) * n);
memcpy(arr->size, size, sizeof(int) * n);
int totalSize = 1;
for (int i = 0; i < n; i++) {
totalSize *= size[i];
}
arr->data = malloc(totalSize);
return arr;
}
//获取数组中某个元素的指针
void *getArrayElement(Array *arr, int *index) {
int offset = 0;
for (int i = 0; i < arr->dim; i++) {
offset = offset * arr->size[i] + index[i];
}
return (char *)arr->data + offset;
}
//释放数组内存
void freeArray(Array *arr) {
free(arr->size);
free(arr->data);
free(arr);
}
以上代码实现了一个不定长多维数组的结构体,可以通过createArray函数创建一个n维数组,通过getArrayElement函数获取数组中某个元素的指针,通过freeArray函数释放数组内存。