我从this article.创建链表时,我们不需要创建实际节点吗?
学习链表教程的作者从来没有产生实际的节点,但类型的节点只指针变量,你可以用下面的代码看...
struct node* head = NULL;
struct node* second = NULL;
struct node* third = NULL;
然后他在堆中为它们分配空间...
head = (struct node*)malloc(sizeof(struct node));
second = (struct node*)malloc(sizeof(struct node));
third = (struct node*)malloc(sizeof(struct node));
为什么他没有创建实际节点?对于这应该是这个样子的代码...
struct node head;
struct node second;
struct node third;
如果我的知识是正确的(纠正我,如果我错了)。简单地声明指针变量不会产生实际的变量(在链表的情况下节点),因此使用代码
head->data = 1;
我的意思是,不能被解除引用类的文章在本教程的作者如果工作,那么为什么这不工作?
int *a;
a=5;
printf("%d",*a);
显然,上述代码不输出5.
这意味着,另一个变量需要被创建,然后它需要说明的是该变量的地址被存储在一个指针变量,才可以解除引用...如下面的代码...
int *a;
int b=5;
a=&b;
printf("%d",*a);
此输出5.
那么,如何笔者逃脱了没有创造日e节点?他只是简单的创建指针变量,然后简单地取消引用它们....
'结构节点*节点= malloc的(的sizeof(*节点))'肯定 '创建' 它。 – user3125367 2014-09-22 03:10:20
关于指针(而不仅仅是节点)的要点是,如果您的头节点固定在堆栈上,则不能安全地添加新元素。 – user3125367 2014-09-22 03:12:56
那么,你试着拿出malloc的,看看你有多远。那些是节点。你应该查看malloc的功能。 – Matt 2014-09-22 03:15:17