Для определенности будем передавать массив символов. Напишем функцию, которая принимает строку и выводит её на экран.
Листинг 18.1
void print_arr(char a[], int n){
for (int i=0; i<n; i++)
printf("%c",a[i]);
printf("\n");
}
Давайте внимательно рассмотрим аргументы, которая эта функция принимает. Первый из них как раз и есть массив, который мы хотим передать. Как видите отличие от передачи обычной переменной лишь в том, что мы после имени пишем квадратные скобки. Именно они и указывают на то, что это не просто некая переменная а целый массив переменных данного типа.
В скобках, не нужно указывать размерность массива. С размерностью массива вообще все не так просто. Функции в Си не умеют самостоятельно определять размерность переданного им массива. Поэтому отдельным параметром нам необходимо передавать его размер. В нашей функции мы передаем размер массива с помощью переменной n.
Напишем самую простую программу, которая будет использовать эту функцию.
Листинг 18.2
#include <stdio.h>
#include <string.h>
void print_arr(char a[], int n){
for (int i=0; i<n; i++)
printf("%c",a[i]);
printf("\n");
}
int main(){
char arr[]="kirill";
int t=strlen(arr);
print_arr(arr,t);
return 0;
}

Обратите внимание, что передача массива в функцию в этом случае, по виду, ничем не отличается от передачи обычной переменной. Мы лишь указываем его имя и все. Это только на первый взгляд так кажется. Но об этом чуть позже.