- ベストアンサー
ポインタの配列のコンマについて
ポインタ配列で char *w[] = { "sun", "mon", "tue", }; のように次に何の要素もないのにtueの後にコンマがついていることがある理由を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
カンマがあってもなくても意味は変わりませんが、要素を縦に並べた時に楽できます。 (1) 配列に、"wed" を追加したいときに、 "tue"の後ろにカンマをつける必要がない。 (2) "tue"と"sun"を入れ替えたいときに、"tue"の後ろにカンマをつけて、"sun"の後ろのカンマを外す必要がない。 対称性の面から美しくしいというプログラマーの自己満足かもしれませんが、案外こういうこだわりがあるものです。 char *w[] = { "sun", "mon", "tue", };
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
かつての C の仕様では「つけてはいけない」ことになっていたのですが, #2 で言われるように「あってもいいとした方が便利」なので現在の規格では「最後の要素の後にコンマをつけてもいい」と変更されました. 配列だけでなく, 同じようにコンマで区切る列挙型の定義でも同様に「最後の要素の後にコンマをつけてもいい」ことになっています. まあ, 1行で書くとあまりありがたみはないんだけど, 例えば char *eng[] = { "zero", "one", "two", "three", }; なんて複数行で書くと「おっと, 追加しなきゃ」ってときに単純に増やすだけですむので楽. 最後の "three" のあとのコンマがあるときとないときで「どのくらい気を遣うか」を考えてみてください.
- titokani
- ベストアンサー率19% (341/1726)
ポインタ配列に限らないはずですよ。 コンマがあってもエラーにならないほうが、ツールなどでソースを自動生成するのに便利だからです。
- wathavy
- ベストアンサー率22% (505/2263)
テストして無いのでいけませんが、最後のカンマ無しでコンパイルしてみてください。多分大丈夫です。私は最後にカンマつけて書いたことないです。