- ベストアンサー
main の引数には const 付けた方が
C言語での質問です。 引数を取るような main 関数は int main( int argc, char *argv[]){~} とされていますが、argvの指す文字列を変更する、というのはいくら何でもまずいので、 int main( int argc, const char *argv[]){~} あるいは int main( int argc, const char const * const * argv){~} の方がいいのではないでしょうか? 何故、constを付けない形が出回っているのでしょうか?
- みんなの回答 (13)
- 専門家の回答
お礼
詳しい説明、ありがとうございました。 argvを変更する重要な場面がよく分かりました。 どちらにしろ、argvの書き換えは慎重にやらなければいけないでしょうが。 「この場合はどうなるんだろう?」「あの場合は?」などの考えが出てきていますが、それらが自己解決できなかったときは別質問とさせていただきます。
補足
あ、なるほど! >昔、プログラムで使えるメモリが貴重だった頃は、どうやってメモリを節約するかが 重要でした。 これは分かるので、そういう歴史的理由かもなどとも思いましたが、組み込み系だとメモリは今でも重要ですね。(組み込み系のプログラムは作ったことがないのでうっかりしていました。) かなり納得したので、質問締め切ることも考えましたが、「ちょっと待った!」という回答が来るかもしれないので、もう少し締め切りはのばしておきます。