Массивы и функции
Часть раздела Основы путешествия по C++ на Coddy — урок 62 из 74.
Массивы нельзя передавать в функции напрямую как целые массивы. При попытке передать массив в функцию он «распадается» в указатель на свой первый элемент.
Например:
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) не даст вам фактический размер массива. arr здесь на самом деле является указателем, а не массивом. Указатели будут изучаться в следующем курсе.
Вот почему при передаче массивов в функции нам обычно нужно передавать размер в качестве отдельного параметра:
void processArray(int arr[], int size) {
// Теперь мы можем безопасно работать с массивом, используя параметр size
}Вот как вызвать функцию:
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Также нельзя возвращать массив из функции:
int[] processArray(int arr[]) {
return arr;
}Это недопустимо. Вместо этого вам следует использовать синтаксис *:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Синтаксис со звездочкой (*) относится к указателям, которые будут обсуждаться в следующем курсе.
Шпаргалка
Массивы нельзя передавать в функции напрямую — они «распадаются» (decay) в указатели на их первый элемент.
При передаче массивов в функции необходимо передавать размер в качестве отдельного параметра:
void processArray(int arr[], int size) {
// Работа с массивом с использованием параметра size
}
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Массивы нельзя возвращать напрямую из функций. Вместо этого используйте синтаксис указателей:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияИнкремент и декрементПостфиксный инкремент и декрементСокращенные арифметические операцииОператоры сравненияСравнение строк7Основы ввода-вывода
Оператор coutОператор cinВвод строкПовторение — До 120Повторение — Истина или ложь3Переменные. Часть 2
Объявление типовСоглашения об именованииПовторение: инициализация переменныхПриведение типов. Часть 1Приведение типов. Часть 26Принятие решений
Оператор ifКонструкция if - elseОператор switchУсловный операторПовторение: if - elseВложенный if - else