C ++ возвращает двойной указатель из функции .... что не так? - PullRequest
6 голосов
/ 20 марта 2010

Я не могу понять, что не так с моей функцией .... Мне нужно спросить пользователя о цене, а затем вернуть ее в виде двойного указателя, но я получаю массу ошибок:

double* getPrice()

{

    double* price;

    cout << "Enter Price of CD: " << endl;

    cin >> &price;



    return price;

}

1 Ответ

10 голосов
/ 20 марта 2010

Чтобы использовать любой указатель, он должен указывать на действительную память. Прямо сейчас у вас есть указатель, который не инициализирован и указывает на мусор. Попробуйте следующее

double* price = new double();

Кроме того, вы должны иметь Cin Pass на double, а не double**.

cin >> *price;

Обратите внимание, что это выделит новую память в вашем процессе, которая должна быть освобождена позже. А именно, вызывающей стороной getPrice. Например

double* p = getPrice();
...
delete p;

В идеале в этом сценарии вам вообще не следует выделять указатель, потому что это приводит к ненужным накладным расходам на управление памятью. Гораздо более простая реализация была бы следующей

double getPrice() {
  double price;
  cout << "Enter Price of CD: " << endl;
  cin >> price;
  return price;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...