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

Обработку массивов удобно организовывать с помощью специальных функций. Если в функцию передается массив, то на самом деле внутрь функции попадает только адрес массива. Фактически в функцию передаются: 1) адрес массива, 2) размер массива. Исключение составляют функции обработки строк, в которые передаются только адреса.

Обычно параметры функций в языке Си передаются как копии. Если внутри функции произойдет изменение значения параметра, то это никак не отразится на его первоначальном (оригинальном) значении. С массивами дело обстоит иначе. Если в функцию передается адрес массива (адрес нулевого элемента), то все операции, выполняемые в функции над массивом, производятся над оригиналом; поэтому исходный массив может быть случайно поврежден.

Рассмотрим пример программы, в которой функция modify увеличивает на 1 значение каждого элемента массива data.

 

 

#include <std io .h>  
void modify(i { int i; nt * a, int size)
     
for (i=0; i< size, • i++)
*(a+i) =* (a+i) + 1;
/* a[i] }   a[i]+l;V

main () г            
int data[] int i; = {-12, 14, -io, 16, 22} ,
  printf("n Исходный массив: ") ;    
  for (i=0; i<5; i++)          
  printf( "n data[ %d] =%d"/ if data [i] ) ;
  modify(dat a, 5) ;          
  printf ("n Модифицированный массив: ") ;
  for(i=0; i <5; i++)          
} printf( "n data[ %d] = =%d", if data [i] ) ;