今日Twitterで、変数を1個だけ使って1から100までの和を作れというお題(Σ100)が流れていた。そのひとつであるtanakhさんのC言語のプログラムを見て、自分もC言語で作ってみた(笑)
C言語ではmain関数からプログラムの実行が始まるのはみんな知ってるけど、(C言語ってのはひどい言語でw、)mainの引数は省略できるんだよね。
自分が知っている範囲では引数は3つあって、main(int argc, char* argv[], char *envp[])。(4つ目もあったような気がするけど、覚えてない…)
argcは実行時引数の個数、argvはその値の配列、envpは環境変数(「変数名=値」という形式)の配列。引数の個数はargcで渡されるのに、envpの個数は渡されない。envp++でポインターを進めていって、*envpがNULLだったら終わり^^;
ちなみにargvも「argv[argc]==NULL」なのが保証されていたはず。
で、自分が作ったΣ100のプログラムは、このうちの第1引数(argc)をカウンターに使おうという鬼畜な構造(爆)
引数を99個渡してやれば、(必ずプログラム名として1個は渡されるので)argcは100になる。さすがに引数を99個書くのは面倒だったので、UNIXのseqを使ったけど^^;
こういう、シンプルで変なプログラムは意外と好きだったりするのだった(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます