以下C++代码行是什么意思?

问题描述:

以下代码块取自实现队列的C++程序。我知道结构,类和指针等,但我不使用结构很多,所以它很难理解什么*front = NULL,*rear = NULL,*p = NULL,*np = NULL;意味着什么。这些节点类型指针是否被声明并被设置为默认值NULL?请纠正我,如果我错了,请好好解释。以下C++代码行是什么意思?

struct node 
 
{ 
 
    int data; 
 
    node *next; 
 
}*front = NULL,*rear = NULL,*p = NULL,*np = NULL;

这是一样

struct node 
{ 
    int data; 
    node *next; 
}; 
node *front = NULL, *rear = NULL, *p = NULL, *np = NULL; 

这意味着与此相同:

struct node 
{ 
    int data; 
    node *next; 
}; 

node *front = NULL; 
node *rear = NULL; 
node *p = NULL; 
node *np = NULL; 

,它肯定没有好作风。

顺便说一句,如果node是一个类,这也可以工作。结构基本上是一个类,默认情况下所有元素都是公共的。

另一个建议:C++ 11有一个用于初始化指针的特定关键字nullptr。这更清楚地表明发生了什么。 NULL只是一个预处理宏,扩展为0.