C++ Llamada por referencia
Para pasar parámetros a una función mediantellamada por referencia, se copia la dirección de la referencia en el parámetro formal. Dentro de la función, esta referencia se utiliza para acceder a los argumentos reales usados en la llamada. Esto significa que modificar el parámetro formal afecta al argumento real.
Al pasar valores por referencia, la referencia del parámetro se pasa a la función, igual que se pasan otros valores a la función. Por lo tanto, en la siguiente funciónswap()debe declarar los parámetros de la función como tipo de referencia; esta función se utiliza para intercambiar los valores de las dos variables enteras a las que apuntan los parámetros.
// 函数定义
void swap(int &x, int &y)
{
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
Ahora, llamemos a la función pasando valores por referenciaswap():
Ejemplos
Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:
交换前,a 的值: 100 交换前,b 的值: 200 交换后,a 的值: 200 交换后,b 的值: 100
Puntos clave
- Definición de referencia: mediante el uso de
&símbolo para definir el tipo de referencia, por ejemploint &ref。 - Pasar referencias: use el tipo de referencia en la lista de parámetros de la función, de modo que las modificaciones dentro de la función afecten a las variables realmente pasadas.
- Evitar la sobrecarga de copia: la llamada por referencia evita la sobrecarga de copia al pasar objetos grandes y mejora la eficiencia.
Escenarios de aplicación de la llamada por referencia
- Modificar variables externas: como se muestra en el ejemplo anterior, modificar la variable pasada a través de la función.
- Reducir la sobrecarga: especialmente al pasar objetos grandes o estructuras de datos complejas, la llamada por referencia puede evitar operaciones de copia innecesarias.
- Optimización del valor de retorno: devolver las variables locales de una función mediante referencia evita la sobrecarga de copia del valor de retorno.
La llamada por referencia es una técnica importante en C++ que puede mejorar la eficiencia y flexibilidad del código. Conocer y dominar la llamada por referencia es de gran ayuda para escribir programas eficientes en C++.
Otras extensiones