答えて
int main(int argc, const char *argv[]) { }
const
値(char *
)が引数である、不変であることを示すため。
プログラム引数がプログラムに渡されると、その値は変更できません。
は、順番に、char
の配列であるconst char *
のの配列としてこの配列を考えます。最大限に活用されていないが、それはシェル/プログラムランチャーを書くの/ etc簡単になりますので
{{'h', 'e', 'l', 'l', 'o', '\0'}, {'w', 'o', 'r', 'l', 'd', '\0'}}
プログラム引数はCプログラムで変更可能であることが必要です_ _ "argc'と' argv'パラメータと 'argv'配列が指す文字列はプログラムによって変更可能で、最後に格納された値をプログラム間で保持しますスタートアップとプログラムの終了 "_ –
この回答は明らかに間違っています。 @ D.Shawleyが指摘しているように、C99規格は、引数が変更可能であることを明示している(セクション5.1.2.2.1最後の箇条書き)。 Xcodeによって作成されたテンプレートが 'const'を使用しているという事実は間違っています。それかOS Xの実行可能環境はC99に準拠していません。 – JeremyP
:
ので、あなたは引数としてあなたのプログラムに文字列の「Hello World」を通過したと言う、argv
は次のようになります。プログラムははるかに複雑です。
そして、「C」のクリエイターは、OS作家の仕事をより簡単にすることを前向きに考えていました。
作成時にCに 'const'キーワードがありませんでした。ところで、D.Shawley氏が指摘したように、C99は、argvが指す文字列はプログラムによって変更可能であると具体的に述べています。 – JeremyP
- 1. なぜこれのconstのconstのconst宣言が有効
- 2. のConst宣言
- 3. execvpのargvパラメータがconstでないのはなぜですか?
- 4. C#:イベントバッキングフィールドが保護されていると宣言してはならない理由は何ですか?
- 5. const変数として決して変更されないパラメータを宣言すべきですか?
- 6. C++ Constポインタ宣言
- 7. constへのポインタまたはconstへのconstポインタを仮パラメータとして宣言する
- 8. なぜWebMethodがStaticとして宣言されたのですか?
- 9. C:メイン関数のArgv宣言
- 10. C++での複雑なconst宣言
- 11. #defineとconst宣言の優先順位
- 12. 宣言とconstのオーバーロードを使用
- 13. .NETで戻り値の型が構造体として宣言されているのはなぜですか?
- 14. 複数のconstを1つの変数宣言に入れてください
- 15. `std`モジュールが宣言されていないのはなぜですか?
- 16. IE9で "SCRIPT5039:constプロパティの再宣言"
- 17. Javaで別のファイルで宣言されているのはなぜですか?
- 18. UITableViewは宣言されていない型のセルですか?
- 19. CompletableFuture.allOfがCompletableFutureとして宣言されているのはなぜですか?<Void>?
- 20. aspxコードビハインドファイルが部分クラスとして宣言されているのはなぜですか?
- 21. HttpServletクラスが抽象クラスとして宣言されているのはなぜですか?
- 22. 宣言されていない識別子 'AppDelegate'の使用
- 23. 名前空間で宣言された静的const変数を参照してください
- 24. 宣言されていない変数
- 25. RでConst変数を宣言
- 26. (強い、強い)として宣言する理由
- 27. "宣言されていない識別子"が実際に宣言されました
- 28. エラー:予想される宣言、宣言されていない型 'オブジェクト'の使用、宣言されていない型 'JSON'の使用
- 29. マップをconstとして宣言して割り当てることはできません
- 30. なぜこの変数が宣言されていないのですか?
これはC言語にもあるはずだからです。 :) – jer
constを宣言すると、Cに厳密に準拠していないことに注意してください。 –
私はそれが単に慣習であると感じています。それは、引数を変更不可能とマークする。 –