node *x = NULL; // 1
node *x = new node(); // 2
В чем разница между этими двумя различными созданиями узлов?
Первый не создает узел. Второй делает.
Первый создает указатель на узел и устанавливает указатель в NULL, что означает, что он ни на что не указывает.
Второй создает указатель на узел, создает узел и устанавливает указатель так, чтобы он указывал на только что созданный узел.
node *x = y;
- это то же самое, что и node *x;
, а затем x = y;
. Оба имеют часть node *x;
(которая создает переменную указателя), но вторая часть отличается.
Почему мы не делаем 2-й тип при создании головы и используем 1-й вообще? ?
Вы бы использовали первый, если вы хотите новый указатель, который указывает на NULL, и второй, если вы хотите новый указатель, который указывает на новый узел.
Разве мы не можем выполнять нулевое назначение каждый раз при создании нового? Или мы не можем каждый раз выполнять функцию "new node ()"? Когда что использовать, это очень сбивает с толку.
Это зависит от того, какой вы хотите. Этот вопрос похож на вопрос: могу ли я каждый раз делать int i = 4;
? Или мы не можем сделать int i = 7 + 3;
каждый раз? Когда мне следует использовать int i = 7 + 3;
вместо int i = 4;
?