具有相同变量名称的不同结构

时间:2014-12-09 01:19:49

标签: c++ c

我有两个不同的结构,它们有一个共同的变量名。如何指定一个不会导致分段错误的值?

struct observer *obs;
obs->next = NULL;

struct sightings *sights;
sights->next = NULL;  

上面的代码会导致分段错误。这可以避免吗?

由于

2 个答案:

答案 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();

完成后,请不要忘记freedelete指针。