В этом контексте & amp; делает переменную ссылкой.
Обычно, когда вы передаете переменную функции, переменная копируется и функция работает над копией. Когда функция возвращается, исходная переменная не изменяется. Когда вы передаете ссылку, копия не создается, и изменения, внесенные функцией, появляются даже после возвращения функции.
C не имеет ссылок, но ссылка C ++ функционально такая же, как указатель в C. Действительно, единственное отличие состоит в том, что указатели должны быть разыменованы при их использовании:
*filename = "file.wav";
Но ссылки могут использоваться так, как если бы они были исходной переменной:
filename = "file.wav";
Якобы, ссылки не должны быть нулевыми, хотя это не исключено, что это произойдет.
Эквивалентная функция C будет:
void read_wav(const char* filename)
{
}
Это потому, что C doesn ' t имеют string
. Обычная практика в C заключается в том, чтобы отправить указатель на массив символов, когда вам нужна строка. Как и в C ++, если вы введете строчную константу
read_wav("file.wav");
Тип const char*
.