"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso usar um loop for baseado em intervalo em uma matriz passada para uma função não principal em C++?

Como posso usar um loop for baseado em intervalo em uma matriz passada para uma função não principal em C++?

Publicado em 2024-11-09
Navegar:365

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

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;
  }
}
Tutorial mais recente Mais>

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