Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Paso de Argumentos por Valor/Puntero/Referencia | Especificación de Argumentos de Funciones
Funciones en C++

Paso de Argumentos por Valor/Puntero/Referencia

Desliza para mostrar el menú

Paso por valor

Las variables creadas dentro de una función son accesibles solo dentro de esa función. Esta regla también se aplica al pasar argumentos. Los parámetros en la firma de la función tienen ámbito local y se pasan por valor, lo que significa que sus valores se copian dentro de la función y se almacenan en variables separadas (similar a pedir prestado un libro de la biblioteca en lugar de tomar el original).

main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by value void modify(int num) { // Modify the parameter (local copy of the argument) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass 'number' by value modify(number); // Varibale in the main function remains unchanged std::cout << "After function call: " << number << std::endl; }

Paso por puntero

Pasar argumentos por valor no siempre es eficiente. Copiar valores utiliza memoria adicional y, en ocasiones, una función necesita modificar directamente la variable original. En estos casos, es mejor pasar la variable por puntero, lo que significa enviar su dirección de memoria en lugar de su valor. Esto se realiza utilizando el operador de puntero (*) en los parámetros de la función.

main.cpp

main.cpp

1234567891011121314151617181920212223
#include <iostream> // Function that takes an argument using pointer void modify(int* p_num) { // Modify the value at the memory address pointed by `p_num` // '*' is used to extract the value from the address (pointer) *p_num = (*p_num) * 2; std::cout << "Inside function: " << *p_num << std::endl; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass the address of 'number' using a pointer // '&' is used to get an address of the variable modify(&number); // 'number' in the main function is modified through the pointer std::cout << "After function call: " << number << std::endl; }

Paso por referencia

El paso por referencia significa proporcionar a una función acceso directo a la memoria de una variable, permitiéndole modificar el valor original sin utilizar el operador de desreferenciación (*).

El paso por referencia utiliza el operador & en los parámetros de la función. Funciona de manera similar al paso por puntero, pero con dos diferencias clave:

  • No es necesario usar * para acceder a la variable dentro de la función.
  • No es necesario usar & al llamar a la función, solo en su declaración.
main.cpp

main.cpp

1234567891011121314151617181920
#include <iostream> // Function that takes an argument by reference void modify(int& num) { // Modify the parameter directly (no need for dereferencing) num = num * 2; } int main() { int number = 5; std::cout << "Before function call: " << number << std::endl; // Call the function and pass `number` by reference modify(number); // `number` in the main function is modified directly through the reference std::cout << "After function call: " << number << std::endl; }
question mark

¿Qué afirmación describe mejor la diferencia entre pasar por valor, puntero y referencia?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 2. Capítulo 2
some-alt