Давайте предположим, что этот код:Проходя через ссылки параметра в функции C++
void function(double &f){
// doing w/e here
}
затем в главной функции:
float v;
function(&v);
Мой компилятор говорит, что это не правильно, покупать я не почему бы и нет.
На эту же тему:
void function(float *&f){
// doing w/e here
}
затем в главной функции:
float *v;
function(v+5);
Это тоже неверно по какой-то причине, что я не получаю ни.
Так что мой вопрос: почему эти неправильные звонки?
Замечание - даже если вы замените 'float' на' double', указатель на 'double' не является ссылкой на' double'. На самом деле, это тесно связанные понятия - ссылка также называется указателем саморазрушения, но C++ рассматривает их как разные типы с различным поведением. Чтобы указать тип указателя для параметра, вы используете 'double * f', а не' double & f'. Чтобы передать ссылку, вам не нужен оператор для преобразования в ссылку, вы просто используете 'function (v)'. – Steve314
Один из способов думать об этом - если вы используете '&' в качестве оператора, он дает вам указатель. Если вы используете '&' в типе, он использует указатель за кулисами, но вы не имеете дело непосредственно с указателем. – Steve314