«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу использовать цикл for на основе диапазона для массива, переданного неосновной функции в C++?

Как я могу использовать цикл for на основе диапазона для массива, переданного неосновной функции в C++?

Опубликовано 9 ноября 2024 г.
Просматривать:456

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

Цикл for на основе диапазона для массива, передаваемого неосновной функции

В C цикл for на основе диапазона может быть используется для перебора массива. Однако когда массив передается не основной функции, он превращается в указатель, теряя информацию о своем размере.

Чтобы решить эту проблему и включить использование цикла for на основе диапазона, массив на него следует ссылаться, а не передавать как указатель. При этом сохраняется информация о размере массива. Вот модифицированные примеры, демонстрирующие правильный подход:

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;
  }
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3