Menu
CoddyTech

Массивы и функции

Часть раздела Основы путешествия по 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);

Синтаксис звёздочки (*) относится к указателям, которые будут рассмотрены в следующем курсе.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор C++