2016-04-03 4 views
0

Следующий блок кода берется из программы на 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;

ответ

3

Это то же самое, как

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 был классом. Структура - это, по сути, класс со всеми общедоступными элементами.

Другая рекомендация: C++ 11 имеет определенное ключевое слово nullptr для инициализации указателей. Это более четко выражает происходящее. NULL - это только макрос препроцессора, который расширяется до 0.

Смежные вопросы