我们今天刚刚被介绍到链表,我得到了概念,但声明困扰我,这里是代码:
struct Node
{
int data;
struct Node *next;
};
Run Code Online (Sandbox Code Playgroud)
为什么这不是一个无限的声明循环?
编译器如何识别struct Node内部struct Node?
在对第二个问题视而不见之后,我看到它的方式如下:
Sto*_*ica 10
- 创建第一个结构中指针指向的结构,它包含一个整数和一个指向同一类型结构的指针.
这是你的推理失败的地方.创建指向某个东西的指针不会自动创建它应该指向的东西.因此,第一个对象是用指针创建的,这并不意味着指针指向有效的东西.就像我写的:
int *p;
Run Code Online (Sandbox Code Playgroud)
它没有任何意义.指针的值是不确定的.我可以初始化指针:
int *p = NULL;
Run Code Online (Sandbox Code Playgroud)
它仍然没有任何意义.但我可以给它一些东西的地址:
int i = 1;
int *p = &i;
Run Code Online (Sandbox Code Playgroud)
而现在是点的东西.与节点中的指针相同.该节点只能用于保存某个节点的地址,但不一定要.这就是链表不仅仅是一个节点的声明,而且还是一组函数(操作)的原因.这些函数旨在确保列表处于有效状态.每个节点指向另一个节点或明确定义的终结点.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |