文字列初期化の時、どれが正しいのでしょうか

char *a="hoge";
char a[]="hoge";
char a[]={'h','o','g','e','\0'};