Обработку массивов удобно организовывать с помощью специальных функций. Для обработки массива в качестве аргументов функции необходимо передать
§ адрес массива,
§ размер массива.
Исключение составляют функции обработки строк, в которые достаточно передать только адрес.
При передаче переменные в качестве аргументов функции данные передаются как копии. Это означает, что если внутри функции произойдет изменение значения параметра, то это никак не повлияет на его значение внутри вызывающей функции.
Если в функцию передается адрес переменной (или адрес массива), то все операции, выполняемые в функции с данными, находящимися в пределах видимости указанного адреса, производятся над оригиналом данных, поэтому исходный массив (или значение переменной) может быть изменено вызываемой функцией.
Пример Дан массив из 10 элементов. Поменять местами наибольший и начальный элементы массива. Для операций поиска максимального элемента и обмена использовать функцию.
#include <stdio.h>
// Функция обмена
void change(int *x, int n) { // x - указатель на массив (адрес массива)
// n - размер массива
int i;
int max, index;
max = x[0];
index = 0;
// Поиск максимального элемента
for(i=1; i<n; i++)
{
if(x[i]>max)
{
max= x[i];
index = i;
}
} // Обмен
x[index] = x[0];
x[0] = max; } int main() {
int a[10];
int i;
for(i=0; i<10; i++)
{
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
change(a,10); // вызов функции обмена
// Вывод элементов массива
for(i=0; i<10; i++)
{
printf("%d ", a[i]);
}
getchar();
getchar();
return 0; }
Результат выполнения
Пример Дан массив размерности n. Вычислить произведение четных элементов
#include <stdio.h> int func(int *x, int n) { // произведение четных элементов
int p=1; // начальное значение произведения
int i;
for(i=0;i<n; i++) {
if(x[i] % 2==0) // остаток от деления на 2 равен 0?
p = p * x[i];
}
return p; } int main() {
int a[5]; // объявлен массив a из 5 элементов
int i;
int pr;
// Ввод элементов массива
for(i=0; i<5; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]); // &a[i] - адрес i-го элемента массива
}
pr = func(a, 5); // вычисление произведения
printf("\n pr = %d", pr); // вывод произведения четных элементов