続き
virtualcurrency-se.hatenablog.jp
前回の記事の続きです、予告通りなんで
int main(int argc, char *args)
って書くの?
ってところいきましょうか。
入門書だと知れっと書いています。
とりあえず意味は
入門書読んだ人はサクッと分かっていると思いますが、
mainとある左右になんだか記号があります。
main()は関数です。そんなもん知っとるはボケ!ですか?すみません。
で、左側のintは返り血ではなく返り値、、もとい戻り値*1の型
()の中は、コマンドなりで本プログラム(プロセス)が呼ばれたときのオプションです。
はい、分かり切ってますね。
昔は戻り値intではなくvoidが主流だったきがしますがUNIXの世界で何も返さないのはよくない上、最近のC99、C11だとvoidあかんみたいですね(くわしくしらんけど
で、何でintなん?って考える人はナンパではなく何%いるんでしょう。
決まってるから?
暗黙でvoidとかいても0を返すからintと書きましょう?ってか?
調べてみるといろいろ分かって面白いと思うのでここで安易に書きません。
で
int argc はコマンド(として入力された文字列)の数
char *args コマンドの実際の文字列
./hogehoge a b cd
といれれば argcは4,args[0]=hogehoge,args[3]=cdとなります。
はい、配列なんてわからねーよゴラァ。。。。
そう、分からないことをかいてくれとりまんねん。しかも*がついています。
あわわわわわわわ、、、\(^o^)/オワタ
ってならないように。
でなんでargc、argsなん?
argc argument count(引数の個数)
args arguments (引数)*2
と書いてますが、最近はargvと書いてる方が多いかもしれません
argv argument vector(引数の配列)
はい、終わり。
これじゃーおもしろくないですね。
結局なんでもいいんです。慣例ってやつですね、なのでaでもbでもわかるようにかけばいいんです。
int main(int kikisuukosuu, char *hikisuunaiyou)
でもいいんです。
でも自分一人で書くプログラムでなければ、一番多い書き方に合わせるのがいいので合わせてくださいねってことで。
ではなんで戻り値には名前がないの?
って気づく人いませんか?
いませんよねーハイ、、もっといえばどこに返すの?とかいろいろ疑問が出てくると思いますけどね( ´艸`)
これ書き始めるとすげー長くなるんで、回わけます。
さらに、args or argvに入る文字列の最大数ってなんぼやねんって気が付いた人もセンスあります。さてどこで決まるか?調べてみてください、沼にはまること間違い無しです。
今回言いたかったことは
何気なく書いている一行にもいろいろ意味があり、しきたりがあるので、それをその1と同じくなんでそう書いてるだろうって思って勉強すると、いろいろ調べて、本質がわかるようになってくると思います。
でもそれは、すげー回り道するんですが、動くから何でもいいって考え方はしなくて、なんでこれで動くんだろ、なんのために書いているんだろうってことを最初から感じてほしいのです。
もちろん予約語のようなお決まりな部分、文法として決まっている部分は丸暗記するしかないのですが、全部丸暗記してプログラマーになると、マジでコピペプログラマーになってしまいます。
まとめ
これ動くってネットにかいてたからコピーしました、だからわかりませんとか平気で言う奴は〇ネ!