Menu
Coddy logo textTech

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

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

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

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