Eu achava que arrays eram considerados estruturas de dados estáticas .
Então executamos isto:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5] = {10,20,30,40,50};
a[5] = 100;
a[6] = 200;
printf("Out of bounds %d, %d", a[5], a[6]);
return 0;
}
Isso retorna Out of bounds 100 200
e termina normalmente. POR QUÊ?
Por que 200 é declarado e retornado normalmente se a[5]
é estático?
Tudo me leva à conclusão de que o gcc trata matrizes como estruturas de dados dinâmicas.
Estou certo? O que está acontecendo?