Извините, если этот вопрос был задан ранее. При поиске через SO я не нашел тот, который спросил, что я хотел знать.
В основном, когда у меня есть это:
typedef struct node
{
int data;
node *node;
} *head;
и сделать node *newItem = new node;
У меня сложилось впечатление, что я объявляю и резервирую пространство, но не определяю указатель на struct node
, это правильно?
Так что, когда я делаю
newItem->data = 100
и newItem->next = 0
Я запутался. newItem = 0
объявит что именно? Оба data
и next
? Объект в целом?
Я особенно запутался, когда использую typedef. Какая часть является макросом? Я предполагаю узел, потому что так я его называю, но зачем он мне нужен?
Наконец, что происходит, когда я делаю:
node *temp;
temp = new node;
temp = head->next;
head->next = newItem;
newItem->next = temp;
Я имею в виду, head-> next - это указатель, указывающий на объект newItem, поэтому я предполагаю, что это не newItem.data или next. Так как же мне безопасно использовать неинициализированный указатель, который я описал выше, как здесь? голова теперь не указывает на неинициализированный указатель?