binary.c:
  unsigned char binary[] = {0xFF, 0xFF, 0xFF, 0xFF};

main.c:
  int main(){
    extern unsigned char *binary;
    int i;
    for(i=0; i<4; i++)
      binary[i] = 0x00;
    return 0;
  }

これをコンパイルして実行するとエラーになります。何故なんでしょうか。
externの部分を*binaryからbinary[]にすればちゃんと動くのは
分かっているんですが、なぜ*binaryでは駄目なのかが分かりません。