#include <stdio.h>
void fibonacci(void)
{
int i;
int fib[10];
for (i = 0; i < 10; i++)
{
if (i < 2)
fib[i] = 1;
else
fib[i] = fib[i-1] + fib[i-2];
}
printf("The 10-th Fibonacci number is %i .\n", fib[i]);
}
int main(void) {
fibonacci();
}В этом примере массив fib присвоен размер 10. Индекс массива для fib позволил значения [0,1,2..., 9]. Переменная i имеет значение 10, когда она выходит из for - цикл. Поэтому, когда оператор printf пытается получить доступ к fib[10] через i, проверка Out of bounds array index производит красную ошибку.
Проверка также производит красную ошибку, если printf использует *(fib+i) вместо fib[i].
Исправление — Сохраняет индекс массива меньше, чем размер массивов
Одно возможное исправление должно распечатать fib[i-1] вместо fib[i] после for - цикл.
#include <stdio.h>
void fibonacci(void)
{
int i;
int fib[10];
for (i = 0; i < 10; i++)
{
if (i < 2)
fib[i] = 1;
else
fib[i] = fib[i-1] + fib[i-2];
}
printf("The 10-th Fibonacci number is %i .\n", fib[i-1]);
}
int main(void) {
fibonacci();
}