【发布时间】:2014-11-17 11:47:34
【问题描述】:
我有以下结构:
struct date {
int year;
int month;
int day;
};
struct person{
char name[64];
struct date birthday;
};
struct aop {
int max;
struct person **data;
};
我尝试 malloc 用于 aop 结构中的数据,如下所示:(此处未发生错误)
struct aop *create_aop(int max) {
struct aop *s = malloc(sizeof(struct aop));
s->max = max;
s->data = malloc((sizeof(struct person)) * max);
return s;
}
但是当我尝试在代码的其他部分访问“数据”时,例如:
a->data[len]->birthday.year = birthday.year;
我遇到了错误。
我是以错误的方式执行 malloc,还是我错误地访问数据?
提前谢谢你!
【问题讨论】:
-
我认为我们已经在您的另一个问题中指出了这个问题。您正在声明一个指向 struct aop 中的指针的指针,但是您分配的是一堆 struct person 而不是 struct person*。请仔细阅读您在此处获得的答案并相应地应用它们。
-
@PhilippMurry 我以前没有问过这个问题。也许是其他人?
-
几天前这里显示了相同的代码:stackoverflow.com/questions/26944311/…这是家庭作业吗?
-
struct person **data是“一个指向 struct person 的指针数组”,而malloc((sizeof(struct person)) * max是 malloc'ing “一个 struct person 的数组”。您可能不想将数据定义为struct person *data。