全然ダメじゃないんだが、

>*str="aiueo";
>と
>str[]="aiueo";

の違いはちゃんと理解してるか?
前者はメモリ上のどこかに"aiueo"という文字列を置いて、strにそのポインタを代入する。
後者は"aiueo"で初期化された配列を確保する。