C语言定义链表结构时,下一节点为什么必须使用指针?
struct Linked {int value;
// 这样报错:错误C2079 “next”使用未定义的 struct“Linked”
// struct Linked next;
// 这样可以,按上述报错同理,此时Linked也还是未定义好的状态,作为指针类型同样也该报错吧?
struct Linked* next;
};
应该是因为指针对象的话只占4Byte空间(32位程序),所以编译器知道要分配4Byte空间给你,所以可以这样用,而你的结构体,在使用他的时候没有定义完,所以编译器不知道要分配多少空间给你,我懵的啊,不一定对,我也没实验调试一下,但我觉得应该是这样的。 首先这占用空间小,其次如果不是指针就难以在修改下一个节点时修改当前节点 zzzssm 发表于 2021-11-6 23:48
应该是因为指针对象的话只占4Byte空间(32位程序),所以编译器知道要分配4Byte空间给你,所以可以这样用, ...
我也觉得是这样的,结构体嵌套自己的话只能套指针,否则就是“无限嵌套”了,就无法分配内存了 不一定啊,要看你定义什么链表,如果是静态链表,那么就不需要指针,如果是动态链表,那么才需要指针
页:
[1]