我最近开始学习链表,在学习如何编写显示链表的代码时,我在结构中遇到了这个所谓的全局指针。所以你能告诉我为什么使用它以及它的作用吗。
struct Node{
int data;
struct Node *next;
}*first=NULL;
//i am asking about the above pointer *first=NULL
像这样的全局指针通常与开发人员只希望通过模块头文件访问的特定资源绑定。例如有效设备或缓冲区位置的系统范围存储。如果这个代码片是在全局范围内初始化的,那么它开始时没有数据,其他函数可以从中添加或删除数据。其他函数可以通过从某个函数(或extern(接收指针first
并迭代next
中的指针引用直到NULL来查看整个数据列表。
first
不是结构的一部分,它是一个类型为"的变量;指向struct Node
的指针";。它很可能指向列表的第一个元素。通常情况下,你不会让列表的头是一个全局变量——你会在main
(或任何主驱动程序(中创建它,并将它作为参数传递给操作列表的各种例程:
struct Node { ... };
int main( void )
{
struct Node *first = calloc( 1, sizeof *first );
...
/**
* The following is a stand-in for however you get the values
* to add to the list
*/
int x;
while( get_next_value( &x ) )
insert( first, x );
display( first );
...
}