Loop for baseado em intervalo na matriz passada para a função não principal
Em C , um loop for baseado em intervalo pode ser usado para iterar sobre um array. No entanto, quando um array é passado para uma função não principal, ele decai em um ponteiro, perdendo suas informações de tamanho.
Para resolver esse problema e permitir o uso de um loop for baseado em intervalo, o array deve ser referenciado em vez de ser passado como um ponteiro. Isso retém as informações de tamanho do array. Aqui estão os exemplos modificados que demonstram a abordagem correta:
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;
}
}
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3