我有两个不同的结构,它们有一个共同的变量名。如何指定一个不会导致分段错误的值?
struct observer *obs;
obs->next = NULL;
struct sightings *sights;
sights->next = NULL;
上面的代码会导致分段错误。这可以避免吗?
由于
答案 0 :(得分:6)
您从未获得段错误,因为您从未为这些指针分配有效值。它与它们之间共享的字段名next
无关。
[更新以添加,以回应评论:]
如果您希望为您不通过malloc
(或类似)分配的列表设置虚拟元素,那么您可以执行以下操作:
struct observer dummyHead = { .next = NULL };
struct observer *obs = &dummyHead;
答案 1 :(得分:5)
如果您使用的是C:
struct observer* obs = malloc(sizeof(*obs));
struct sightings* sights = malloc(sizeof(*sights));
如果您使用的是C ++:
observer* obs = new observer();
sightings* sights = new sightings();
完成后,请不要忘记free
或delete
指针。