誤解?

型宣言の必要性: 国民宿舎はらぺこ 大浴場

「getenv() は char * を返すから、home も char * だ」という解釈がまかり通ってしまうと、将来的にはこの home という変数には、char * 以外の型の値が入ってきてもいいように見えます (実際 Perl はそんな感じの世界ですね)。

型推論でhomeの型を決定しているのだから、char *以外の型の値が入るわけ無いと思います。
"そう見える"のが問題ってわけじゃないよな。

例えばJavaで、「LinkedList x = new LinkedList()」と書かずにわざわざ「List x = new LinkedList()」と書くことの意義を理解していない。

というのも、キャストしてやれば問題ないような。

ところで、なんで後置だと"変数宣言がそのまま型宣言にもなる"のだろ。