#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();
}