我正在尝试实现这个...一个容器结构数组的容器,并且在每个结构体内部都是一个单独的int数组,表示一个类似的整数... 12,345将在一个int数组中[5 ] = {1,2,3,4,5}
这是一种可以实施的方式。这个实现的主要问题是我迷失了所有指向各处的指针,我开始遍布垃圾数据并且全部都是段错误。哦,是的,一切都是动态的。好吧几乎所有我想如果你有一个struct容器,里面有一个结构,如果容器是malloc'd那么它内部的struct也会自动malloc'd所以我的猜测就是
容器 - > struct.array
不确定????
答案 0 :(得分:1)
你需要自己编写malloc和你的struct和contianer的函数,并在你需要contianer或释放它的空间时每次调用它们,例如:
struct outside{
struct inside *in;
};
struct inside{
int *array;
};
struct outside *malloc_outside(size_t n) {
int i;
struct outside *o;
o = (struct outside *)malloc(n*sizeof(struct outside));
for(i=0;i<n;i++) {
o->in = malloc(sizeof(struct inside));
o->in->array = NULL;
}
return o;
}
void free_outside(struct outside *out) {
free(out->in->array);
free(out->in);
free(out);
return;
}
和malloc()数组的空间在malloc_outside()
之后需要的数量构造函数和析构函数在C ++中更容易实现。
答案 1 :(得分:0)
struct,包含一个包含整数数组的结构数组。没问题,就像你问的那样
#define SIZE (8)
typedef struct {
struct data {
int idata[SIZE];
};
struct data arr[SIZE];
}record;
//or
struct data {
int idata[SIZE];
};
typedef struct data arr[SIZE];
答案 2 :(得分:0)
我不确定我是否完全理解,但请查看以下代码:
struct MyStruct {
int *array;
};
struct Container {
struct MyStruct *array;
};
分配部分就像:
struct Container c;
c.array = malloc(sizeof(struct MyStruct) * NUM_STRUCTS);
for (i = 0; i < NUM_STRUCTS; ++i) {
c.array[i].array = malloc(get_num_of_digits(12.345) * sizeof(int));
}
我没有测试过这段代码,但是应该做这个工作:P。祝你好运。