Bien, tenemos esto:
---012
------
0--000
1--010
2--000
Por tanto, array[1][1] es el elemento "base".
ahora, un bucle:
int x = ... // X de la base (array[X][Y])
int y = ... // Y de la base (array[X][Y])
for(int i=-1;i<2;i++)
for(int j=-1;j<2;j++)
if(!(i==0 && j==0)) //Obviamente, el elemento base va a ser diferente de cero. Lo omitimos.
if(array[i+x][j+y]!=0) return 0; // Se ha dado que un elemento no era 0. Retornamos false (suponiendo que sea una función)
return 1; //Al acabar, si no ha retornado aún, significa que los elementos eran 0.
Bueno, ese sería el algoritmo básico. Luego tú tendrías que comprobar que no estea en un lado del array. Recuerda que si está a un lado de el array, "array[i+x][j+y]" va a dar elementos negativos o por encima del tamaño.
Saludos