C++ Передача массивов в функции

Массивы C++

В C++ можно передать указатель на массив, указав имя массива без индекса.

В C++, при передаче массива в функцию тип массива автоматически преобразуется в тип указателя, поэтому фактически передается адрес.

Если вы хотите передать одномерный массив как параметр в функцию, необходимо объявить формальный параметр функции одним из следующих трех способов. Результаты этих трех способов объявления одинаковы, потому что каждый способ сообщает компилятору, что будет получен указатель на целое число. Аналогично, вы также можете передать многомерный массив как формальный параметр.

Способ 1

Формальный параметр — указатель:

void myFunction(int *param)
{
.
.
.
}

Способ 2

Формальный параметр — это массив с заданным размером:

void myFunction(int param[10])
{
.
.
.
}

Метод 3

Формальный параметр — это массив неопределённого размера:

void myFunction(int param[])
{
.
.
.
}

Пример

Теперь давайте рассмотрим следующую функцию, которая принимает массив в качестве параметра и также передаёт другой параметр. В зависимости от переданного параметра она возвращает среднее значение элементов массива:

double getAverage(int arr[], int size) { int i, sum = 0; double avg; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = double(sum) / size; return avg; }

Теперь вызовем вышеуказанную функцию следующим образом:

Пример

#include <iostream> using namespace std; // Объявление функции double getAverage(int arr[], int size); int main () { // Целочисленный массив из 5 элементов int balance[5] = {1000, 2, 3, 17, 50}; double avg; // Передать указатель на массив в качестве аргумента avg = getAverage( balance, 5 ) ; // Вывести возвращаемое значение cout << "Среднее значение:" << avg << endl; return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

平均值是: 214.4

Вы можете видеть, что с точки зрения функции длина массива не имеет значения, поскольку C++ не выполняет проверку границ для формальных параметров.

Массивы C++

Другие расширения