Вы имеете дело не с Nodes
здесь, а с Node
указателями. Они не указывают на действительную память, если вы не выделите ее.
Кроме того, не используйте NULL
, вместо этого используйте nullptr
.
head = nullptr;
head->data = 42; // this is UB, could be a segfault
Если вы хотите это сделать , вы должны выделить его
head = new Node{};
head->data = 42; //ok
Тот же лог c применяется для arr
arr[1] = new Node{}; // now arr[1] is pointing to valid memory
Я не уверен, почему вам нужен массив указателей Node, хотя , Ваша Node
структура выглядит как обычный узел связанных списков, и есть тег linked-list
, поэтому я предполагаю, что вы хотите реализовать связанные списки.
В этом случае вам не нужно массив указателей узлов вообще. Весь связанный список должен быть подключен через head
.
Если вы просто хотите получить массив узлов, вы можете это сделать, и вообще не беспокоиться о выделении памяти.
Node arr[10] {};
arr[1].data = 42; // ok