Выход за границу массива
Выход за границу массива — обращение к элементу массива, индексы которого выходят за указанные в объявлении массива пределы.
Программист сам должен заботиться о том, чтобы индексы элемента массива лежали в пределах, указанных при объявлении массива.
Для увеличении скорости работы программы не выполняется проверка, лежит ли индекс массива в указанных при объявлении пределах. Такая проверка должна производится во время работы программы каждый раз при обращении к массиву с использованием этого индекса. Если бы Си проверял допустимость индекса массива, то программа работала бы намного медленнее.
Но помимо увеличения скорости работы программы, отсутствие проверки индексов имеет и нежелательные последствия — индекс может выйти за границы массива. В этой ситуации возможно одно из двух:
Программист должен обеспечивать изменение индекса массива в диапазоне от 0 до (размер_массива-1).
Пример 1
/*Пример выхода за границу массива: */
int ray[20], i;
i = 0;
while (i <= 20)
   {
    ray [i] = i*10;
    i += 1;
   }
Копирование массивов
Массивы должны копироваться поэлементно.
Нельзя копировать массивы так, как это показано в прим. 2. В левой части операции присваивания нельзя использовать только имя массива.
Имя массива, используемое в программе без скобок, воспринимается как адрес, начиная с которого хранится массив. Этот адрес нельзя изменить, он не является именующым выражением.
Пример 2
int prev[20], current[20];
prev = current;              /*Неправильно: так копировать  массив нельзя */
Пример 3
int prev[20], current[20];
for (i=0; i<20; i+=1)        /*Правильно: копировать массив надо так */
   prev[i] = current [i];

Примечание 1
Для обработки массивов очень удобно использовать цикл for.
Ввод массивов
Ввод массивов оуществляется поэлементно:
Пример 4
int a[5]; /*массив на 5 целых чисел*/
for(i=0;i<5;i++)
scanf("%d", &a[i]);
Примечание 2
Использовать функцию scanf() надо очень аккуратно и грамотно, так как при ошибке ввода она не очищает буфер ввода.
Вывод массива
Вывод массива также осуществляется поэлементно:
Пример 5
int b[7]={-3,5,8,-45,0,-1,8};
for(j=0;j<7;i++)
printf("%5d", a[j]);
printf("\n"); /*переходим на следующую строку*/