Хотелось бы вывести 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
?
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Помогите пожалуйстаФункция должна выводить слово(слова) минимальной длины
Почему strcat в цикле добавляет содержимое второго массива (аргумента) в первый несколько раз, как показано на картинке
Есть ли какие-нибудь инструменты для C++ на Windows, которые позволяют узнать, сколько раз программа выполнила какую-то строчку?
Пытаюсь создать графический редактор на QtДобавил на сцену графические элементы QGraphicsItem на сцену QGraphicsScene