Массивы и функции
Часть раздела Основы путешествия по 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);Синтаксис звёздочки (*) относится к указателям, которые будут рассмотрены в следующем курсе.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияИнкремент и декрементПостфиксный инкремент и декрементСокращенные арифметические операцииОператоры сравненияСравнение строк7Основы ввода-вывода
Оператор coutОператор cinВвод строкПовторение — До 120Повторение — Истина или ложь3Переменные. Часть 2
Объявление типовСоглашения об именованииПовторение: инициализация переменныхПриведение типов. Часть 1Приведение типов. Часть 26Принятие решений
Оператор ifКонструкция if - elseОператор switchУсловный операторПовторение: if - elseВложенный if - elseПотренируйтесь самостоятельно: Онлайн-компилятор C++