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

naz*_*erb 0 c c++

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

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

struct sightings *sights;
sights->next = NULL;  
Run Code Online (Sandbox Code Playgroud)

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

谢谢

dan*_*uzz 6

您正在获得段错误,因为您从未为这些指针分配有效值.它与next它们之间共享的字段名称无关.

[更新以添加,以回应评论:]

如果你想要一个你没有通过malloc(或类似)分配的列表的虚拟元素,那么你可以做类似的事情:

struct observer dummyHead = { .next = NULL };
struct observer *obs = &dummyHead;
Run Code Online (Sandbox Code Playgroud)


Ill*_*ian 5

如果您使用C:

struct observer* obs = malloc(sizeof(*obs));
struct sightings* sights = malloc(sizeof(*sights));
Run Code Online (Sandbox Code Playgroud)

如果您使用的是C++:

observer* obs = new observer();
sightings* sights = new sightings();
Run Code Online (Sandbox Code Playgroud)

当你完成它们时,不要忘记freedelete分别指出.