C言語学習ポータル(無料版) 学習コンテンツ はじめてのC main関数と#include

🚪 はじめてのC

main関数と#include

無料公開版に収録・読む目安 10分

🎯 mainが実行の入口であること、#includeがヘッダファイルを取り込む指示であることを説明できる

main は特別な名前です。プログラムがどれだけ大きくなっても、OSが最初に呼ぶのは必ず main。空港でいえば入国ゲートで、旅の出発点はここ1つだけと決まっています。

main関数の形

#include <stdio.h>

int main(void) {
    printf("入口はここです\n");
    return 0;
}

int main(void) を分解します。

・int … main が返す値の型。整数を1つ返します。
・main … 名前。この名前の関数だけが入口になれます。
・(void) … 引数(受け取るもの)は無し、という意味。
・{ } … 中身。ここに書いた処理が上から順に実行されます。

古い教材には void main(void) と書いてあるものがありますが、これは標準に反する書き方です。このポータルでは int main(void) で統一します。

return 0 は誰に返しているのか

返す相手はOSです。0は「正常終了」、0以外は「何か問題があった」という合図。人が画面で見ることは少ないですが、複数のプログラムを自動でつなぐとき(バッチ処理)に使われます。Windowsのコマンドプロンプトなら echo %ERRORLEVEL%、Linux/macOSなら echo $? で、直前のプログラムが返した値を確認できます。

師範終了コードは、プログラムがこの世に残す最後のひとことじゃ。0は「無事に済んだ」、それ以外は「事情あり」。呼んだ側はこれで次の行動を決めるのじゃ。

#include は何をしているのか

#include <stdio.h> は、コンパイル前の下ごしらえです。指定したヘッダファイルの中身を、その場に丸ごと貼り付けます。stdio.h には printf や scanf の「使い方の宣言」が書かれています。つまり「printf という関数はこういう形で使いますよ」と、コンパイラに前もって教えるための行です。

書き方は2種類あります。

#include <stdio.h>   // < > … コンパイラ付属の標準ヘッダを探す
#include "mycode.h"  // " " … まず自分のフォルダを探す

動く例——道具が増えると書き方が増える

#include <stdio.h>

int main(void) {
    puts("puts は改行付きで1行そのまま出します");
    printf("printf は書式を細かく指定できます\n");
    return 0;
}

puts も stdio.h の道具です。1行そのまま出すだけなら puts のほうが短く書けます(改行は自動で付きます)。

罠・注意

#include の行末にセミコロンは不要。 # で始まる行は普通の文ではありません。付けるとエラーになります。

stdio.h を書き忘れる。 printf が「宣言されていない」という警告やエラーになります。実物は次のトピックで見ます。

main を2つ書かない。 1つのプログラムに入口は1つだけです。

まとめ

実行は必ず main から始まり、return 0; でOSに正常終了を伝えます。正式な形は int main(void) で、void main は使いません。#include はヘッダファイルを貼り付けて、関数の使い方をコンパイラに教える指示です。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

関数かんすう

一連の処理に名前を付けてひとまとめにしたもののこと。同じ処理を何度も書かずに、名前を呼ぶだけで再利用できる部品にあたる。printfやscanfも、標準ライブラリがあらかじめ用意してくれている関数の一種。

型かた

変数に入れられる値の種類と、確保するメモリの大きさを決める分類のこと。箱の形や大きさを決めるルールのようなものだと考えるとよい。int・double・charなど、C言語にはあらかじめ複数の型が用意されている。

ヘッダファイルへっだーふぁいる

関数の宣言など、複数のファイルで共有したい情報をまとめた.hという拡張子のファイルのこと。#includeで取り込んで使う。#include <stdio.h>のstdio.hが、まさにこのヘッダファイルにあたる。

コンパイラこんぱいら

ソースコードを機械語に変換するソフトウェア。文法チェックも同時に行い、間違いがあればコンパイルエラーとして知らせてくれる翻訳者兼校正者にあたる。gccやclangなど、C言語向けのコンパイラにはいくつかの種類がある。

同じトラックのほかの項目

開発環境ゼロで始める——このポータルの使い方環境構築なしで学習を始める手順と、このポータルの3つの使い方(読む・追う・解く)が分かる Hello, World! を解剖するHello, World! の5行それぞれの役割を自分の言葉で説明できる コンパイルエラーと友達になるエラーメッセージ1行を分解して読み、最初の1件から順に直せるようになる printfで画面に出す——書式指定の基本書式指定子とエスケープシーケンスを使い分け、思いどおりの形で値を表示できる scanfで入力を受け取るscanfで数値を読み取り、&の意味と戻り値の確認までできる scanfの罠——入力の恐怖を越えるscanfの3大トラップ(&忘れ・型違い入力・改行残り)の症状と対処を説明できる コメントとコードの整え方2種類のコメントを使い分け、読みやすい書き方の基本ルールを身につける
‹ Hello, World! を解剖する コンパイルエラーと友達になる ›

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH