Я понимаю код, в котором вызывающая функция имеет переменную, а вызываемая функция в подпрограмме имеет амперсанд. Амперсанд в вызываемой функции означает, что любые изменения, внесенные в эту функцию, отражаются в вызывающей функции, т. е. вы передаете по ссылке, а не по копии. Но чем это отличается от следующего?
Код: Выделить всё
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
swap(&x, &y);
}
Вышеупомянутую функцию подкачки можно было бы с тем же успехом выполнить с амперсандами в вызываемой функции и простыми переменными в вызывающей функции, без необходимости использования звездочек в вызываемом объекте и амперсандов при вызове. Так зачем же беспокоиться о звездочках и амперсандах?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... -parameter