结构内部结构内的int数组

时间:2013-06-13 00:44:31

标签: c arrays struct malloc

我正在尝试实现这个...一个容器结构数组的容器,并且在每个结构体内部都是一个单独的int数组,表示一个类似的整数... 12,345将在一个int数组中[5 ] = {1,2,3,4,5}

这是一种可以实施的方式。这个实现的主要问题是我迷失了所有指向各处的指针,我开始遍布垃圾数据并且全部都是段错误。哦,是的,一切都是动态的。好吧几乎所有我想如果你有一个struct容器,里面有一个结构,如果容器是malloc'd那么它内部的struct也会自动malloc'd所以我的猜测就是

容器 - > struct.array

不确定????

3 个答案:

答案 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。祝你好运。