[英]int array inside a struct inside a struct
我正在尝试实现这一目标...一个包含一个结构数组的容器,并且在每个结构内部都是一个int数组,它表示一个整数,如下所示... 12,345将位于int array [5] = { 1,2,3,4,5}
这是可以实现的一种方式。 我这种实现方式的主要问题是,我迷失了指向所有地方的所有指针,并且开始遍地都是垃圾数据,遍历了段错误。 哦,对了,一切都是动态的。 好吧,几乎所有我想的东西,如果您有一个struct容器,里面有一个结构,如果容器是malloc'd的,那么它里面的结构也是自动malloc'的,所以我的猜测是
容器-> struct.array
不确定????
您需要编写自己的struct的malloc和free函数,并自己修改容器,并在需要容器或释放其空间时每次调用它们,例如:
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 ++中,构造函数和析构函数更容易实现。
包含一个包含整数数组的结构数组的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];
我不确定我是否已完全理解,但请看以下代码:
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。 祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.