C++ Передача по ссылке

Функции C++

Метод передачи параметров в функцию,Передача по ссылкекопирует адрес ссылки в формальный параметр. Внутри функции ссылка используется для доступа к фактическим аргументам, которые будут использоваться в вызове. Это означает, что изменение формального параметра влияет на фактический аргумент.

При передаче по ссылке ссылка на параметр передается в функцию так же, как и другие значения в функцию. Поэтому, соответственно, в следующей функцииswap()необходимо объявить параметры функции как ссылочные типы. Эта функция используется для обмена значениями двух целочисленных переменных, на которые указывают параметры.

// 函数定义
void swap(int &x, int &y)
{
   int temp;
   temp = x; /* 保存地址 x 的值 */
   x = y;    /* 把 y 赋值给 x */
   y = temp; /* 把 x 赋值给 y  */
  
   return;
}

Теперь вызовем функцию, передавая значения по ссылкеswap():

Пример

#include <iostream> using namespace std; // Объявление функции void swap(int &x, int &y); int main () { // Объявление локальной переменной int a = 100; int b = 200; cout << "Перед swap, значение a:" << a << endl; cout << "Перед swap, значение b:" << b << endl; /*Вызовите функцию, чтобы поменять значения*/ swap(a, b); cout << "После swap, значение a:" << a << endl; cout << "После swap, значение b:" << b << endl; return 0; } // Определение функции void swap(int &x, int &y) { int temp; temp = x; /*Сохраните значение по адресу x*/ x = y; /*Присвойте y переменной x*/ y = temp; /*Присвойте x переменной y*/ return; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

Ключевые моменты

  1. Определение ссылки: используя&символ для определения ссылочного типа, напримерint &ref。
  2. передача по ссылке: Используйте ссылочные типы в списке параметров функции, чтобы изменения внутри функции влияли на фактические переданные переменные.
  3. Избегание накладных расходов на копирование: Передача по ссылке позволяет избежать накладных расходов на копирование при передаче больших объектов, повышая эффективность.

Сценарии применения вызова по ссылке

  • Изменение внешних переменных: Как показано в примере выше, изменяйте переданные переменные через функцию.
  • сокращение накладных расходов: Особенно при передаче больших объектов или сложных структур данных передача по ссылке позволяет избежать ненужных операций копирования.
  • Оптимизация возвращаемого значения: Возврат локальной переменной функции по ссылке позволяет избежать накладных расходов на копирование возвращаемого значения.

Вызов по ссылке — важная техника в C++, которая может повысить эффективность и гибкость кода. Понимание и освоение вызова по ссылке очень помогает при написании эффективных программ на C++.

Функции C++

Другие расширения