"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo usar un bucle for basado en rango en una matriz pasada a una función no principal en C++?

¿Cómo puedo usar un bucle for basado en rango en una matriz pasada a una función no principal en C++?

Publicado el 2024-11-09
Navegar:812

How can I use a range-based for-loop on an array passed to a non-main function in C  ?

Bucle for basado en rango en una matriz pasada a una función no principal

En C, se puede crear un bucle for basado en rango utilizado para iterar sobre una matriz. Sin embargo, cuando una matriz se pasa a una función no principal, se descompone en un puntero y pierde su información de tamaño.

Para resolver este problema y habilitar el uso de un bucle for basado en rango, la matriz Se debe hacer referencia a él en lugar de pasarlo como un puntero. Esto conserva la información del tamaño de la matriz. Aquí están los ejemplos modificados que demuestran el enfoque correcto:

void foo(int (&bar)[3]);

int main() {
  int bar[3] = {1,2,3};
  for (int i : bar) {
    cout << i << endl;
  }
  foo(bar);
}

void foo(int (&bar)[3]) {
  for (int i : bar) {
    cout << i << endl;
  }
}

// Generic implementation
template <std::size_t array_size>
void foo(int (&bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3