Возврат C++ удваивает указатель от функции … что случилось?

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

double* getPrice()

{

    double* price;

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

    cin >> &price;



    return price;

}
6
задан user69514 20 March 2010 в 19:02
поделиться

1 ответ

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

double* price = new double();

. Кроме того, вам необходимо, чтобы cin передавал double , а не double ** .

cin >> *price;

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

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

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

double getPrice() {
  double price;
  cout << "Enter Price of CD: " << endl;
  cin >> price;
  return price;
}
10
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: