繁体   English   中英

结构内部的int数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM