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;
}
}
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