Проблема в том, что вы объявили int*
, но не дали ему ничего для указания.Что вам нужно сделать, это инициализировать его с помощью ячейки памяти (проверка ошибок не указана)
int* c = new int();
...
*c = d; // Now works
Позже вам нужно будет обязательно освободить эту память, поскольку это выделенный ресурс.
Лучшее решение - использовать ссылки.У указателей есть несколько неприятных атрибутов, включая унифицированные значения, NULL
, необходимость освобождения и т. Д. Большинство из них отсутствуют в ссылках.Вот пример того, как использовать ссылки в этом сценарии.
void add (int a, int& c) {
int d;
d = a + 1;
c = d;
cout << "c = " << c << endl;
}
int c;
add(4, c);