Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Llamada por referencia en C++ usando punteros: ejemplos prácticos

Llamada por referencia en C++ usando punteros: ejemplos prácticos

Esta guía explica cómo pasar argumentos por referencia en C++ usando punteros, con ejemplos de código claros que demuestran el intercambio de valores y más.

En el mundo de las funciones de C++, la forma predeterminada de pasar datos es por valor: la función recibe una copia de los datos originales. Si bien esto protege la variable original, puede ser ineficiente para objetos grandes e impide que la función modifique los datos del llamador.

Pasar por referencia resuelve ambos problemas. En lugar de copiar los datos, la función recibe una referencia (o dirección) a la variable original, permitiendo su manipulación directa. Esto se logra de dos formas equivalentes: usando referencias de C++ o punteros crudos. Entender ambos enfoques le da flexibilidad y una visión más profunda del manejo de memoria.

// Función que toma un valor
void func1(int numVal) {
    // código
}

// Función que toma una referencia (sintaxis de referencia de C++)
void func2(int &numRef) {
    // código
}

int main() {
    int num = 5;
    // Pasar por valor
    func1(num);
    // Pasar por referencia
    func2(num);
    return 0;
}

El & en void func2(int &numRef) indica que el parámetro es una referencia. Cuando se llama a func2, se pasa la dirección de num, no su valor, permitiendo que la función modifique num directamente.

Llamada por referencia en C++ usando punteros: ejemplos prácticos

Ejemplo 1: Intercambio de valores con referencias de C++

#include <iostream>
using namespace std;

// Función de intercambio usando referencias
void intercambiar(int &n1, int &n2) {
    int temp = n1;
    n1 = n2;
    n2 = temp;
}

int main() {
    int a = 1, b = 2;
    cout << "Antes de intercambiar\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    intercambiar(a, b);
    cout << "\nDespués de intercambiar\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    return 0;
}

Salida

Antes de intercambiar
a = 1
b = 2
Después de intercambiar
a = 2
b = 1

En este ejemplo, intercambiar recibe dos referencias. Como n1 y n2 son alias de a y b, los cambios dentro de la función afectan a las variables originales.


Ejemplo 2: Intercambio de valores con punteros

#include <iostream>
using namespace std;

// Prototipo de función usando punteros
void intercambiar(int*, int*);

int main() {
    int a = 1, b = 2;
    cout << "Antes de intercambiar\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    // Pasar direcciones de a y b
    intercambiar(&a, &b);
    cout << "\nDespués de intercambiar\n";
    cout << "a = " << a << "\n";
    cout << "b = " << b << "\n";
    return 0;
}

// Función de intercambio usando punteros
void intercambiar(int* n1, int* n2) {
    int temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

Salida

Antes de intercambiar
a = 1
b = 2
Después de intercambiar
a = 2
b = 1

Aquí, intercambiar acepta punteros crudos. Al desreferenciar con *, la función accede y modifica los valores en las direcciones proporcionadas. El resultado es idéntico a la versión con referencias, pero la sintaxis de punteros hace el paso de direcciones explícito.

La elección entre referencias y punteros depende del contexto: las referencias ofrecen sintaxis más segura y limpia, mientras que los punteros proporcionan control explícito sobre direcciones de memoria y son necesarios para asignación dinámica.

Lenguaje C

  1. 13 Tipos de Malware en 2021: Amenazas, Ejemplos y Prevención
  2. 5 Modelos de Centros de Datos Explicados: Diseño, Casos de Uso y Ejemplos
  3. Explorando 8 Tendencias Tecnológicas Clave de 2021 con Ejemplos Reales
  4. Dominando las Sentencias Using en C#: Importaciones, Alias y Directivas Estáticas
  5. Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
  6. Comentarios en C++: Mejores Prácticas para Código Legible y Mantenible
  7. Dominando las plantillas de clase en C++: guía práctica
  8. Dominando punteros en C: Tutorial práctico guiado por expertos
  9. Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
  10. Dominando punteros en C: Pasos prácticos para programación avanzada
  11. Lenguaje de Programación C++: Visión General y Características Clave