char array[256];
と宣言したら
sizeof(array);
で256が返ると思います。でも、

void print_arraysize(char *array) {
  printf("%d",sizeof(array));
}

というようにするとポインタのサイズが返ります。
呼び出される関数側から配列のサイズを知る方法はありますか?