【问题标题】:What does the following C++ line of code mean?以下 C++ 代码行是什么意思?
【发布时间】:2016-04-03 21:18:17
【问题描述】:
以下代码块取自一个实现队列的 C++ 程序。我知道结构、类和指针等,但我不经常使用结构,所以我很难理解*front = NULL,*rear = NULL,*p = NULL,*np = NULL; 的含义。是否声明了这些节点类型指针并将其设置为默认值 NULL?如果我错了,请纠正我并请解释。
struct node
{
int data;
node *next;
}*front = NULL,*rear = NULL,*p = NULL,*np = NULL;
【问题讨论】:
标签:
c++
pointers
data-structures
struct
【解决方案1】:
和这个一样
struct node
{
int data;
node *next;
};
node *front = NULL, *rear = NULL, *p = NULL, *np = NULL;
【解决方案2】:
意思是一样的:
struct node
{
int data;
node *next;
};
node *front = NULL;
node *rear = NULL;
node *p = NULL;
node *np = NULL;
而且绝对不是什么好风格。
顺便说一句,如果node 是一个类,这也可以。 struct 基本上是一个类,默认情况下所有元素都是公共的。
另一个建议:C++11 有一个特定的关键字nullptr 用于初始化指针。这更清楚地表达了正在发生的事情。 NULL 只是一个扩展为 0 的预处理器宏。