Разъяснения по поводу указателей в c ++

0

Здесь у меня есть некоторые строки кода. У меня проблемы с:

struct Node 
{
String data;
Node * next;
};

struct List
{
Node * head;
};

static Node  * nouvNode (string word,Node *p = nullptr){
Node  *pNouv = new Node ;
pNouv->data =word;
pNouv->next = p;
return pNouv;

Хорошо, вот мои вопросы:

1) pNouv здесь является указателем, который я создал, указав на узел. Когда я выполняю pNouv=>next=p, означает ли это, что мой указатель в pNouv указывает на следующий узел, на который указывает указатель p? Или мой указатель указывает на заметку, которая тоже имеет указатель, который указывает на другой узел, где P указывает на тот же путь?

2) static Node * nouvNode (string word,Node *p = nullptr) Это метод создания нового узла с данными в нем, но зачем ему нужно "Node * p = nullptr" в параметре? Когда я создаю узел в своей программе, я делаю это nouvNode(word, ls.head) например.

Спасибо за помощь.

  • 3
    Это слишком запутанно - Или мой указатель указывает на заметку, которая тоже имеет указатель, который указывает на другой узел, где P указывается таким же образом? Просьба уточнить.
Теги:
pointers

2 ответа

0
 pNouv->next=p  

В соответствии с моим пониманием, если вы выполняете вышеуказанный оператор, узел pNouv начинает указывать на p узел, который является не чем иным, как NULL. Таким образом, выражение выше кода эквивалентно

pNouv=>next=NULL;

2) static Node * nouvNode (string word,Node *p = nullptr)

Передача Node *p = nullptr качестве второго параметра является необязательной. Вам просто нужно word. Вы всегда можете создать новый узел в теле функции и пересечься с головы, а затем в конечном итоге позиционировать вновь созданный узел в нужном месте.

0

1) pNouv->next = p означает, что член структуры, next в структуре, на которую указывает pNouv, настроен на то же, что и p. Итак, есть блок памяти. pNouv указывает на этот блок памяти. Где-то внутри этого блока памяти вы помещаете адрес из p.

2) дополнение = nullptr делает этот параметр необязательным. Вы могли бы просто вызвать nouvNode(word) и вы получили бы узел со значением word помещенного в него, которое не указывало ни на что, как на следующий узел.

  • 0
    Ладно, хорошо, я понимаю, так что следующая структура, на которую вы говорите. Но разве не указатель? Для меня следующая структура указывает на ту же область памяти, что и точки p. Который из них? Это указывает на p, или на тот же самый указатель местоположения p указывает также?
  • 0
    Вы правы; это был плохо написанный ответ. Я надеюсь, что это улучшилось.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню