>>877
>struct hoge *tmp = (struct hoge *)0; と書くだろう

このように書いても*正しく*NULLポインタが代入される
char zero[(struct hoge *)] = {0};
memcpy(tmp, zero, sizeof zero);
としないとダメ

逆によく見かけるポインタを含む構造体をmemcpyで0に初期化するのも正しく無い