次の意味は何ですか:
printf("%c", **++argv);
Cコマンドラインプログラムで?
渡された最初の引数の最初の文字を出力します。すなわちargv[1][0]
argv
に渡されるポインタへのポインタmain()
です。
**++argv
:
最初に、(プリインクリメントにより)次のポインターを指すようにインクリメントされargv[1]
ますargv[1][0]
。
argv
main() で次のように宣言できます。main(int argc, char** argv)
argv
引数文字列の文字列です。
++argv means (argv + 1)
*
アドレス演算子の値です:
そう
*argv
=> *(argv + 0)
=>プログラム名argv[0]
である 0 番目の引数を指す=>のようにコマンドで渡す必要がある ポイント。
*(argv +1)
argv[1]
1th argument
*++argv => *(argv + 1)
=> argv[1]
それは最初の引数のアドレスです。
[答え]
**++argv => *(*(argv + 1) )
=> *(*(argv + 1) + 0)
=> *((argr[1] + 0)
=>argv[1][0]
それは最初の引数の最初の文字です。
コマンドライン引数の概念がここにあります。
コマンドライン引数は、main関数に渡される引数です。
printf("%c",**++argv);
実行可能ファイルの後の最初の引数の最初の文字を出力します。
上記のステートメントは優先順位に従って実行されます。最初に引数がインクリメントされ、次に参照が解除されて値が取得されます。
ルーチンでは、main()
パラメータargv
は文字列の配列として使用されます。つまり、文字argv
へのポインタへのポインタです。" ++argv
"に渡された2番目のコマンドライン引数を指すように自動インクリメントしますmain()
。*++argv
は2番目の引数の最初の文字へのポインタであり、最後に**++argv
cnicutarによって投稿されたseconds引数自体の最初の文字です。
printf
「 」では%c
、文字型のパラメータのプレースホルダーとして使用されます。
これにより、プログラムの実行時に最初のコマンドライン引数の最初の文字が出力されるか、プログラムが引数なしで実行された場合はクラッシュします (null ポインターを逆参照することにより)。
*(++argv) は argv[1] を返します
これは最初の引数文字列または null (引数がプログラムに渡されない場合)
*( *(++argv) ) は *argv[1] = argv[1][0] です
これは、最初の引数の最初の文字 (存在する場合) または *(null) であり、クラッシュします。