char型の配列とポインタの違いってどうやって見分けるんですか?
↓のコードだと 配列宣言の直下ではsizeof の結果256ですが、
関数の中ではポインタの大きさの4になります。
文字列を受け取る関数のほとんどは、配列宣言直後の変数でも
引数で受け取ったポインタでも同じように扱えるし、見た目の書き方
も同じですよね。
コードではどっちも同じ書き方の「sz」でアクセスできるのが不思議です。

void func(char* sz)
{
  printf("%d",sizeof(sz));  ← 4になる(違う)
  printf(sz);    ← qwertyと表示される(同じ)
}

int main(int argc,char* argv[])
{
  char sz[256];
  strcpy(sz,"qwerty");
  printf("%d",sizeof(sz));  ← 256になる(違う)
  printf(sz);    ← qwertyと表示される(同じ)
  func(sz);
}