以下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.