C 链表,数据结构,结构

C 链表,数据结构,结构,c,data-structures,linked-list,C,Data Structures,Linked List,两者的确切区别是什么 结构节点头 和 结构节点*头 如果我的结构是以下形式- struct node {int data; struct node *next; }; 一个是结构实例结构节点头,另一个是指向结构实例结构节点*头的指针 结构节点a;/*为新节点结构a分配空间*/ a、 数据=123; a、 next=NULL; 结构节点*b=&a;/*创建指向a的指针b*/ b->data=234; //现在a.data==234。 结构节点head->head是结构节点类型的变量,即head

两者的确切区别是什么 结构节点头 和 结构节点*头 如果我的结构是以下形式-

struct node 
{int data;
struct node *next;
};
一个是结构实例结构节点头,另一个是指向结构实例结构节点*头的指针

结构节点a;/*为新节点结构a分配空间*/ a、 数据=123; a、 next=NULL; 结构节点*b=&a;/*创建指向a的指针b*/ b->data=234; //现在a.data==234。
结构节点head->head是结构节点类型的变量,即head的sizeof=sizeofstruct node

struct node*head->head是指向struct node类型结构的指针,因此sizeof head=常规指针大小

你可以, head.data=x; head.next=NULL

但你不能这样做 头部->数据=x; head->next=NULL


因为当您说struct node head时,内存已经分配给您了,这与后面的情况不同,后者需要在使用这些内存之前进行动态内存分配

如果我不把&a分配给b怎么办?@GauravVishwakarma:如果你不把&a分配给b,那么它就不能保证指向任何有效或有用的东西;取消对指针的引用可能会使程序崩溃。