SIerから脱出するでござる

ドナドナITマン(Uターン勢)がもがく日記

ブログ始めました

どうも、初めまして。

瀬野と申します。

 

プログラマです。多分…

 

スキルなんて皆無なので、勉強用に初めてみました。コンゴトモヨロシク…

 

写経してゲームを作りましたのでそれをうpしようと思います。

 

が、そのままうpすると中身そのままになるんで改変改良してからにします…

 

代わりに今日のテーマです。

 

「Hello, world!をC言語で書いてみた。」

 

レベル低っ!と思った方は回れ右してもいいっす…

 

まあ、Hello,world!を出力するだけじゃ物足りないですよね?

 

なのでもう一歩踏み込んで

 

文の意味とか、その辺をやや細かく見ていこうと思います。

 

まず、Cを齧った人なら誰でも書いたことがあろうものを書きます。

 

はい↓

 

#include <stdio.h>

int main()
{
printf("Hello, world!\n");
return 0;
}

 

とまあ、これでコンパイル通して実行したら

 

Hello, world!

 

と出るはずです。

 

ほんじゃ、1行目から見ていくことにしましょう。

 

#include <stdio.h>

これは「STDIO.H というファイルの内容をソース プログラムに追加します。」

…とのこと(マイクロソフトのHPに書いてました)

stdio.hはヘッダファイルです。

ヘッダファイルってなんやねん。と思った方…次の記事で書きます。お楽しみに

つまりこういうことです。

「#include <ソースコードに追加するファイル>」

ちなみに「#include "ソースコードに追加するファイル"」なんてのもあるようです。

 

次にint main()ですが、これは正確には

int main(int argc, char *argv[])にとなります。

(括弧の中身どこ行ったの?という疑問が浮かぶと思いますが、省略できます。)

意味は「main関数はint型を返す。引数としては、argcとargvが有る。」です。

・int型のmain関数

・int型の引数argc(コマンドラインの引数の数)

・char型の引数argv(コマンドラインの引数の実体へのポインタ)

この3人が居るみたいですね。

(引数とかポインタとかについてもおいおい書きたい)

これは

main(){

とも書くことができるようです。

C言語は、大きく分けて2つの世代が有り、第一世代はK&Rの時代、第二世代はANSIの時代です。

※時代を紐解いてみるのも面白そう…今後触れていけたらいいな

 

んで最後の箇所ですね。中括弧の中身です。

 

{

printf("Hello, world!\n");
return 0;
}

 

関係ないですけど、海外では{}が大括弧扱いで、グローバルスタンダードになってるようですね。なんで日本では中括弧と大括弧の扱いが逆になってるのか…

 

…話を戻しましょう。

 

括弧の中身を見ていきます。

printf("Hello, world!\n");

printfは「print formatted」の略で、C言語の標準入出力ヘッダー(stdio.h)で宣言されている関数です。先ほどのstdio.hは標準入出力ヘッダーだったんですね。

引数(括弧の中身)で与えられた書式付きの文字列を、環境によって設定された標準出力 (stdout) に出力します。

ここでは"Hello, world!"が文字列として与えられて、stdoutに出力されます。

ちなみに\nは改行です。

 

return 0; ←こちらも見ていきましょう。

これは「プログラムが正常終了しましたよ」ということを意味する0をmain関数に返しています。

※成功時にゼロを返すのは、C言語の「お約束」らしいです。

 

初ブログのネタとしてHello,world!を掘り下げてみましたが、簡単そうに見えて実は裏でこんな風になってたのかと改めて感じました。

 

ネタにできそうな単語もちらほら出てきたので、最後に今後書くテーマになりそうな単語を記事用にまとめておきます。

 

ヘッダファイル

コマンドライン

・引数

・ポインタ

・参照渡し

・スタック

・ビット演算

・配列

・構造体

 

明日にでもまたちょっとずつ書いていきます。

ではまた!