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

Cómo Pasar Arrays a Funciones en C++: Guía Práctica

Cómo Pasar Arrays a Funciones en C++

Esta guía explica cómo pasar arrays uni- y multidimensionales a funciones en C++ usando ejemplos de código reales.

En C++, los arrays pueden suministrarse como argumentos de función, e incluso puedes retornarlos indirectamente a través de punteros. Entender la mecánica detrás de la decadencia de arrays a punteros y el impacto en memoria y rendimiento es esencial para escribir código eficiente.


Sintaxis para Pasar Arrays como Parámetros de Función

La declaración para una función que acepta un array se ve así:

tipoRetorno nombreFunción(tipoDato nombreArray[tamañoArray]) { // cuerpo de la función }

Ejemplo:

int total(int notas[5]) { // implementación }

Aquí, notas es un array int de cinco elementos. Cuando se llama a la función, solo se pasa el nombre del array (un puntero a su primer elemento).


Ejemplo 1: Pasando un Array Unidimensional a una Función

#include <iostream> using namespace std; // Declarar función para mostrar notas void mostrar(int m[5]) { cout << "Mostrando notas:" << endl; for (int i = 0; i < 5; ++i) { cout << "Estudiante " << i + 1 << ": " << m[i] << endl; } } int main() { int notas[5] = {88, 76, 90, 61, 69}; mostrar(notas); // Pasar array por nombre return 0; }

Salida

Mostrando notas: Estudiante 1: 88 Estudiante 2: 76 Estudiante 3: 90 Estudiante 4: 61 Estudiante 5: 69

Puntos clave:

  1. Llamar a mostrar(notas); pasa la dirección de notas[0].
  2. Dentro de la función, int m[5] se trata como int* m;, apuntando a la misma memoria.
  3. Modificar m[i] cambia el array original notas, ilustrando semántica de paso por referencia.

Pasando un Array Multidimensional a una Función

Para arrays 2-D, debes especificar el número de columnas (el tamaño de la segunda dimensión) para que el compilador pueda calcular los desplazamientos de elementos.

Ejemplo 2: Pasando un Array Bidimensional a una Función

#include <iostream> using namespace std; void mostrar(int n[][2]) { cout << "Mostrando valores:" << endl; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 2; ++j) { cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl; } } } int main() { int num[3][2] = {{3, 4}, {9, 5}, {7, 1}}; mostrar(num); return 0; }

Salida

Mostrando valores: num[0][0]: 3 num[0][1]: 4 num[1][0]: 9 num[1][1]: 5 num[2][0]: 7 num[2][1]: 1

Notas:

Arrays de dimensiones superiores siguen la misma regla: el tamaño de todas las dimensiones excepto la primera debe especificarse.


Retornando un Array desde una Función

Las funciones no pueden retornar un array completo directamente. En su lugar, retornan un puntero al primer elemento, que puede referirse a un array estáticamente asignado, un array dinámico o un objeto temporal. Se debe tener cuidado para evitar retornar punteros a arrays locales (de pila), lo que resultaría en referencias colgantes.

Ejemplo (array estático):

int* obtenerArray() { static int arr[5] = {1, 2, 3, 4, 5}; return arr; // puntero al primer elemento }

Para asignación dinámica, considera retornar un std::vector<T> para seguridad y gestión automática de memoria.

Se recomienda lectura adicional sobre manejo seguro de arrays en C++ para código de producción.

Lenguaje C

  1. Dominando arrays escalonados en C#: Declaración, inicialización y acceso
  2. Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
  3. Funciones y clases amigas en C++: dominando el control de acceso
  4. Dominando los operadores en programación C: guía completa
  5. Arrays en C++: Declaración, inicialización y técnicas con punteros
  6. Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
  7. Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
  8. Funciones en C++ Explicadas con Ejemplos de Código Prácticos
  9. Dominar la programación en C: Tutorial completo para principiantes
  10. Dominando la Sobrecarga en C++: Funciones y Operadores Explicados
  11. Entendiendo el Polimorfismo en C++: Guía Práctica