Хотелось бы вывести 4 3 2 1 0. Но ничего не выводит. Где я свернул не туда?
#include <iostream>
using namespace std;
struct number {
int x;
number *adr;
};
void add(number *,int);
void show(number *);
int main() {
number *top = new number;
top = NULL;
for (int i = 0; i < 5; i++) {
add(top, i);
}
show(top);
system("pause");
}
void add(number *top, int x){
number *temp = new number;
temp->adr = top;
temp->x = x;
top = temp;
}
void show(number *top)
{
number *temp = top;
while (temp != NULL)
{
cout << temp->x << " ";
temp = temp->adr;
}
}
Функция add не модифицирует и не может модифицировать указатель top в функции main, ибо он передается в функцию add по значению. Указатель top в main навсегда остается равным null-указателю. Поэтому ничего и не выводится.
Либо передавайте top в add по ссылке, либо выработайте какой-то другой способ возвращения нового значения top из add в main.
Отдельно стоит заметить, что последовательность
number *top = new number;
top = NULL;
бессмысленна и только порождает утечку памяти. Зачем вам понадобился этот new?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости