5

このexecv()関数は、終了文字列の配列を想定NULLしていますが、引数の数を取りません。番兵値 (NULLポインター) を使用して、配列がいつ終了するかを判別します。

execv()州のマニュアルページ...

最初の引数は、慣例により、実行中のファイルに関連付けられたファイル名を指す必要があります。ポインターの配列は、NULL ポインターで終了する必要があります。

...だから私の質問は....

argvfrommain()をに渡したいexecv()

main に入る argv が NULL ポインターで終了していると確信できますか? つまり、サイズ+ 1argv[argc] == NULLの独自の配列を割り当ててインデックスを配置する必要があると確信できますか?char*argcNULLargc

安心できる場合、それはどこかに文書化されていますか?

ありがとう、〜エリック

4

1 に答える 1

9

はい。argvベクトルは常にNULL終了します。

C99 標準のドラフトでは、次のように述べられています。

それらが宣言されている場合、main関数のパラメーターは次の制約に従う必要があります。

  • の値はargc非負でなければなりません。
  • argv[argc]ヌルポインタでなければなりません。
于 2012-05-16T13:34:35.543 に答える