@uzi_no_uzi

Как работает данная функция?

Имеется такой код, по которому возникли вопросы

#include <iostream>
#include <fstream>
using namespace std;

void insert(list*& p, char value); 
 
struct list
{
	char symbol;
	list* next;
};

int main()
{
	setlocale(LC_CTYPE, "Russian");
	list* first = nullptr;

	char value;
	cout << "Введите символ ";
	cin >> value;
	insert(first, value);
}

void insert(list*& p, char value) // 
{
	list* newP = new list;
	if (newP != NULL)     //есть ли место?  
	{
		newP->symbol = value;
		newP->next = p;
		p = newP;
	}
	else
		cout << "Операция добавления не выполнена" << endl;
}


1. Функция insert принимает два параметра, для чего первый параметр? Зачем передавать в функцию insert указатель на ссылку первым параметром?
2. list* first = nullptr - Похоже в этой строке создается указатель на первый элемент односвязного списка, зачем в него присваивать пустоту?
3. Что происходит в этой строке? list* newP = new list;
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вопросы следует задать разработчику этого кода, ибо общий ответ на все 3 пункта – потому что так написан код. Предпосылки неизвестны.
  1. В первом параметре передается ссылка на указатель "головы списка", функция insert создает новый элемент списка и вставляет его в начало, поэтому ей необходимо менять значение указатели на голову
  2. "C++ неявно преобразует nullptr в соответствующий тип указателя". Пустота присваивается потому что он пустой, а переменные следует инициализировать
  3. Создается новый элемент списка
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
АРТТЭК Краснодар
от 150 000 до 150 000 ₽
от 200 000 до 300 000 ₽
Uptrade Москва
от 200 000 до 250 000 ₽
27 мая 2024, в 12:26
30000 руб./за проект
27 мая 2024, в 12:25
5000 руб./за проект
27 мая 2024, в 11:51
100000 руб./за проект