答えて
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. C++ Constポインタ宣言
- 6. Cppメインメソッドconst宣言
- 7. const変数として決して変更されないパラメータを宣言すべきですか?
- 8. functionでclassを宣言しているときにconstと&を使用するのはなぜですか?
- 9. C++ - '(const char *)'はスコープ内で宣言されていませんか?
- 10. 抽象宣言者 'const <anonymous class>'を宣言として使用C++
- 11. constへのポインタまたはconstへのconstポインタを仮パラメータとして宣言する
- 12. const_iteratorをconstイテレータとして宣言することは十分ですか?
- 13. なぜGADBannerViewが宣言されていないのですか?
- 14. なぜ 'EINTR'が宣言されていないのですか?
- 15. C:メイン関数のArgv宣言
- 16. エクスターナル・テンプレート:宣言が宣言されていないもの
- 17. C++での複雑なconst宣言
- 18. なぜWebMethodがStaticとして宣言されたのですか?
- 19. クラス宣言でconstメンバー変数が初期化されたときの例外
- 20. 宣言とconstのオーバーロードを使用
- 21. #defineとconst宣言の優先順位
- 22. 複数のconstをJavaScriptで宣言できないのはなぜですか?
- 23. なぜこの関数宣言でconstと&を使用しますか?
- 24. C - 宣言時の宣言されていない変数
- 25. SBTプロジェクトがなぜレイジー・ヴァルとして宣言されていますか?
- 26. C++エラーはクラスが宣言されていないと言っています
- 27. .NETで戻り値の型が構造体として宣言されているのはなぜですか?
- 28. IE9で "SCRIPT5039:constプロパティの再宣言"
- 29. 複数のconstを1つの変数宣言に入れてください
- 30. なぜclangは_Imaginary_Iが宣言されていないのですか?
これはC言語にもあるはずだからです。 :) – jer
constを宣言すると、Cに厳密に準拠していないことに注意してください。 –
私はそれが単に慣習であると感じています。それは、引数を変更不可能とマークする。 –