Перейти к основному содержимому

Для программ на C++

Массивы и функции передаются в функцию через указатели:

  • Имя массива является указателем на его нулевой элемент. Указатель "ничего не знает" о длине массива и длина массива должна передаваться в функцию как параметр.
  • Имя функции указывает на первую команду кода функции.

Передача одномерных массивов в функцию

#include <iostream>

using namespace std;

// В функцию передаются
// указатель на начало массива
// (имя массива a) и его размерность(n)
int sum(const int *a, int n) {
int i, s = 0;
int k = sizeof(a); // k – размер указателя (4 байта)
cout << "k=" << k << endl;
for (i = 0; i < n; i++)
s += a[i];
return s;
}


int main() {
setlocale(LC_ALL, "Russian");
int n;
int a[] = {1, 2, 3, 4, 5, 6, 7, 8};

// Определение размерности инициализированного массива
n = sizeof(a) / sizeof(int);
cout << "n=" << n << endl;
cout << sum(a, n) << "\n";
return 0;

}

Передача имен функций в качестве параметров

#include <iostream>

using namespace std;

/* для удобочитаемости программы определяется новый тип
(тип пользователя) PF - указатель на функцию, которая имеет
один параметр типа int и не возвращает никакого значения*/
typedef void (*PF)(int);

// Определение функции f1
// функция получает в качестве параметра
// указатель типа PF
void f1(PF pf) {
pf(5); //вызов функции через указатель
}

void f(int i) { cout << i << endl; }

int main() {
setlocale(LC_ALL, "Russian");
f1(f); //Функция выведет на экран число 5
return 0;
}