Cambiando el valor de una variable externa

Tenemos en File1.c

int arr[10];

Y en File2.c

extern int *arr;

int main()

{
   arr[0]=10;
   return 0;
}

¿Cuáles son los problemas que pueden ocurrir con esto y por qué?