0

我正在尝试实现这一点...一个包含结构数组的单个容器,并且在每个结构内部都是一个 int 数组,它表示一个整数,就像这样... 12,345 将在一个 int 数组 [5] = { 1,2,3,4,5}

什么是可以实现的方法。我对这个实现的主要问题是我迷失了所有指向任何地方的指针,我开始到处都是垃圾数据和到处都是段错误。哦,是的,顺便说一句,一切都是动态的。好吧,我猜几乎所有的东西,如果你有一个结构容器,里面有一个结构,如果容器是 malloc'd 那么它里面的结构也会自动 malloc'd 所以我的猜测是

容器->struct.array

没有把握????

4

3 回答 3

0

包含一个结构数组的结构,该结构包含一个整数数组。没有指针,正如你所问

#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];
于 2013-06-13T00:57:57.233 回答
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。祝你好运。

于 2013-06-13T00:58:51.980 回答
0

您需要自己编写 struct 和 contianer 的 malloc 和 free 函数,并在每次需要 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++ 中更容易做到。

于 2013-06-13T01:09:58.790 回答