C++ с параметром функции вызова "&" и funcrameter вызываемого абонента "*" [Дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
C++ с параметром функции вызова "&" и funcrameter вызываемого абонента "*" [Дубликат]

Сообщение Anonymous »

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

Код: Выделить всё

  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

Вернуться в «C++»