• ベストアンサー

ポインタの配列のコンマについて

ポインタ配列で     char *w[] = { "sun", "mon", "tue", }; のように次に何の要素もないのにtueの後にコンマがついていることがある理由を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • gentoo314
  • ベストアンサー率41% (15/36)
回答No.4

カンマがあってもなくても意味は変わりませんが、要素を縦に並べた時に楽できます。 (1) 配列に、"wed" を追加したいときに、 "tue"の後ろにカンマをつける必要がない。 (2) "tue"と"sun"を入れ替えたいときに、"tue"の後ろにカンマをつけて、"sun"の後ろのカンマを外す必要がない。 対称性の面から美しくしいというプログラマーの自己満足かもしれませんが、案外こういうこだわりがあるものです。 char *w[] = { "sun", "mon", "tue", };

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

かつての C の仕様では「つけてはいけない」ことになっていたのですが, #2 で言われるように「あってもいいとした方が便利」なので現在の規格では「最後の要素の後にコンマをつけてもいい」と変更されました. 配列だけでなく, 同じようにコンマで区切る列挙型の定義でも同様に「最後の要素の後にコンマをつけてもいい」ことになっています. まあ, 1行で書くとあまりありがたみはないんだけど, 例えば char *eng[] = { "zero", "one", "two", "three", }; なんて複数行で書くと「おっと, 追加しなきゃ」ってときに単純に増やすだけですむので楽. 最後の "three" のあとのコンマがあるときとないときで「どのくらい気を遣うか」を考えてみてください.

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

ポインタ配列に限らないはずですよ。 コンマがあってもエラーにならないほうが、ツールなどでソースを自動生成するのに便利だからです。

  • wathavy
  • ベストアンサー率22% (505/2263)
回答No.1

テストして無いのでいけませんが、最後のカンマ無しでコンパイルしてみてください。多分大丈夫です。私は最後にカンマつけて書いたことないです。