C++入門|C言語プログラムの仕組み

C言語のプログラムは、修行場に入るための準備、技を出す命令、そして正常終了の合図でできています。main.cの一行一行を読み解けば、C++修行の土台がしっかり見えてきます。

ここまでで、Visual Studio 2026を使ってプロジェクトを作成し、main.cにプログラムを入力し、実行するところまで進めてきました。

ここからは、そのmain.cに書かれている内容を、ひとつずつ読み解いていきます。

C言語のプログラムは、ただ文字を並べているだけではありません。どの機能を使うのかを準備し、どこから処理を始めるのかを決め、画面に文字を表示し、最後に正常に終わったことを知らせる、という流れがあります。

ドラゴンボール風にたとえるなら、C言語のプログラムは修行メニューのようなものです。

まず、修行に必要な道具を用意します。次に、修行を始める入口に立ちます。そして、技を出し、最後に修行が無事に終わったことを修行装置へ伝えます。

C言語の基本文法を学ぶ第一歩として、まずは前回入力したChap1_01/main.cをじっくり見ていきましょう。

最も基本的なプログラムを見直そう

今回説明するプログラムは、Visual Studio 2026で作成したChap1_01プロジェクトのmain.cです。

このプログラムは、コンソール画面に日本語のメッセージを表示します。C言語の文法を学ぶうえで、最初に確認するのにちょうどよい短いプログラムです。

プロジェクト/ファイル名: Chap1_01/main.c(再掲)

#include <stdio.h>

int main(int argc, char** argv) {
    // コンソールに日本語メッセージを表示する
    printf("C言語の修行を始めます。\n");
    printf("Visual Studioで最初のプログラムを実行しました。\n");

    // プログラムが正常に終わったことを示す
    return 0;
}

このプログラムを実行すると、コンソール画面には次のように表示されます。

C言語の修行を始めます。
Visual Studioで最初のプログラムを実行しました。

この短いプログラムの中には、C言語の大切な基本がいくつも含まれています。

行の内容役割ドラゴンボール風のイメージ
#include <stdio.h>表示機能を使う準備修行道具を倉庫から取り出す
int main(int argc, char** argv)プログラムの開始地点修行場の入口に立つ
{ }処理のまとまり修行エリアの範囲を示す
printf文字を画面に表示する修行装置の表示パネルにメッセージを出す
\n改行する次の行へ表示を進める
;命令の終わりひとつの動作を完了する合図
return 0;正常終了を知らせる修行が無事に終わったと報告する

最初は記号が多く見えるかもしれませんが、それぞれにきちんと役割があります。

C言語では、このような小さな部品を組み合わせて、ひとつのプログラムを作っていきます。

図:C言語プログラム全体の流れ

この図が示していること

この図では、C言語のプログラムがどのような順番で動くのかを表しています。

まず、#includeで必要な機能を使う準備をします。次に、main関数から処理が始まります。その中でprintfを使ってコンソールに文字を表示し、最後にreturn 0でプログラムが正常に終わったことを知らせます。

C言語のプログラムは、いきなり画面に文字を表示しているわけではありません。準備、開始、処理、終了という流れに沿って動いています。

#includeは修行道具を準備する宣言

プログラムの1行目には、次のような記述があります。

#include <stdio.h>

これは、ヘッダーファイルを読み込むための宣言です。

ヘッダーファイルとは、C言語で用意されている機能を使うための説明書のようなものです。今回読み込んでいるstdio.hは、標準入出力に関する機能を使うために必要なヘッダーファイルです。

今回のプログラムではprintfを使っています。printfは、コンソールに文字を表示するための関数です。このprintfを正しく使うために、stdio.hを読み込んでいます。

ドラゴンボール風にたとえるなら、#include <stdio.h> は、修行場で表示装置を使うための道具箱を開ける合図です。

表示パネルにメッセージを出したいなら、表示用の道具を準備しておく必要があります。その準備をしているのが、#include <stdio.h>です。

記述意味
#include外部のヘッダーファイルを読み込む
stdio.h標準入出力の機能を使うためのヘッダーファイル
.hヘッダーファイルを表す拡張子

C言語では、使いたい機能に応じて必要なヘッダーファイルを読み込みます。

今回のようにprintfを使う場合は、stdio.hが必要です。もし別の機能を使う場合は、別のヘッダーファイルを読み込むこともあります。

ヘッダーファイルとライブラリの関係

stdio.hは、標準ライブラリの機能を使うために必要なヘッダーファイルです。

標準ライブラリとは、C言語にあらかじめ用意されている便利な機能の集まりです。文字を表示したり、文字を入力したり、計算をしたり、文字列を扱ったりするための機能が用意されています。

ヘッダーファイルは、その機能をプログラムから使うための入口になります。

ドラゴンボール風に言えば、ライブラリは修行場に置かれた便利な装置や道具の集まりです。そして、ヘッダーファイルは、それらの道具の使い方が書かれた説明書です。

用語役割ドラゴンボール風のイメージ
ライブラリ便利な機能の集まり修行場に用意された道具や装置
ヘッダーファイル機能を使うための宣言や説明道具の使い方が書かれた説明書
stdio.h入出力機能を使うためのヘッダーファイル表示パネルを使うための説明書
printf文字を表示する関数表示パネルにメッセージを出す技

C言語では、必要な機能を使う前に、その機能を使えるように準備する必要があります。

その準備として、#includeを使ってヘッダーファイルを読み込みます。

main関数はプログラムの入口

次に、次の部分を見ていきましょう。

int main(int argc, char** argv) {

これは、main関数の宣言です。

C言語のプログラムは、実行するとまずmain関数から処理が始まります。つまり、main関数はプログラムの入口です。

ドラゴンボール風にたとえるなら、main関数は修行場の入口です。戦士が修行場に入ると、そこから修行メニューが始まります。同じように、C言語のプログラムもmain関数に入ったところから処理が始まります。

この行には、いくつかの要素があります。

部分意味
intmain関数が整数の値を返すことを示す
mainプログラムの開始地点になる関数名
argc実行時に渡された情報の個数を受け取る
argv実行時に渡された情報の中身を受け取る
{main関数の処理の始まり

今回のプログラムでは、argcとargvは使っていません。

ただし、C言語やC++では、実行時に外部から渡される情報を受け取れる形として、int main(int argc, char** argv) がよく使われます。今は、プログラムの入口としてこのような書き方があるのだと理解しておけば大丈夫です。

関数とは、名前のついた処理のまとまり

C言語は、関数の組み合わせで作られています。

関数とは、処理に名前をつけて、必要なときに呼び出せるようにしたものです。

今回のプログラムには、mainとprintfという関数が出てきます。

mainは、プログラムの開始地点になる特別な関数です。printfは、文字をコンソールに表示するための関数です。

ドラゴンボール風にたとえるなら、関数は名前のついた技です。

技には、気を高める、攻撃する、表示する、移動する、のように役割があります。C言語でも、関数ごとに役割が決まっていて、必要な関数を呼び出しながら処理を進めます。

関数役割ドラゴンボール風のイメージ
mainプログラムの開始地点修行場に入る入口
printf文字を表示する表示パネルにメッセージを出す技

関数は、C言語を理解するうえでとても重要です。

C言語のプログラムは、上から下へ命令が流れていくように見えますが、その中心には関数があります。処理を関数としてまとめることで、プログラムを整理しやすくなります。

図:main関数とprintf関数の関係

この図が示していること

この図では、main関数とprintf関数の関係を表しています。

C言語のプログラムは、main関数から始まります。そして、main関数の中に書かれた処理が順番に実行されます。今回のプログラムでは、その中でprintf関数が呼び出され、コンソール画面に日本語メッセージを表示しています。

main関数は修行場の入口、printf関数は表示パネルにメッセージを出す技と考えると、プログラムの流れがつかみやすくなります。

中カッコは処理の範囲を表す

main関数の中身は、次のように中カッコで囲まれています。

{
    // コンソールに日本語メッセージを表示する
    printf("C言語の修行を始めます。\n");
    printf("Visual Studioで最初のプログラムを実行しました。\n");

    // プログラムが正常に終わったことを示す
    return 0;
}

この { と } は、中カッコ、または波カッコと呼ばれます。

C言語では、中カッコを使って処理のまとまりを表します。main関数の中で実行される処理は、この中カッコの内側に書きます。

ドラゴンボール風に言えば、中カッコは修行エリアの境界線です。

ここからここまでがmain関数の修行メニューですよ、という範囲を示しています。中カッコの外にあるものは、main関数の中の処理ではありません。

記号意味
{処理のまとまりの始まり
}処理のまとまりの終わり

C言語では、この中カッコの対応を間違えると、プログラムの構造が分かりにくくなったり、エラーになったりします。

Visual Studioでは、対応する中カッコを見やすく表示してくれることがあります。プログラムが長くなってきたら、中カッコの対応を意識することが大切です。

printf関数はコンソールに文字を表示する

今回のプログラムでは、printf関数を使ってコンソールに日本語メッセージを表示しています。

printf("C言語の修行を始めます。\n");
printf("Visual Studioで最初のプログラムを実行しました。\n");

printfは、C言語に用意されている標準的な関数のひとつです。

printfのあとに続く丸カッコの中に、表示したい文字列を書きます。文字列はダブルクォーテーションで囲みます。

ドラゴンボール風にたとえるなら、printfは修行装置の表示パネルにメッセージを出す技です。

printfに表示したい言葉を渡すと、その言葉がコンソール画面に表示されます。

書き方役割
printf文字を表示する関数
( )関数に渡す内容を書く場所
"C言語の修行を始めます。\n"表示する文字列
;その処理の終わり

printfを使うためには、最初にstdio.hを読み込んでおく必要があります。

そのため、今回のプログラムでは先頭に#include <stdio.h>が書かれています。もしstdio.hを読み込まないと、printfを正しく使えない場合があります。

ダブルクォーテーションは文字列を表す

printfの中では、表示したい文字をダブルクォーテーションで囲みます。

printf("C言語の修行を始めます。\n");

このダブルクォーテーションで囲まれた部分が、文字列です。

文字列とは、文字が並んだデータのことです。今回の場合は、C言語の修行を始めます。という日本語メッセージが文字列です。

書き方意味
"C言語の修行を始めます。\n"表示したい文字列
"Visual Studioで最初のプログラムを実行しました。\n"表示したい文字列

ドラゴンボール風に言えば、ダブルクォーテーションは巻物に書かれたメッセージを囲む枠です。

この枠の中に書かれた文字が、表示パネルに出す内容になります。

セミコロンは処理の終わりを表す

printfの行やreturn 0の行の最後には、セミコロンがあります。

printf("C言語の修行を始めます。\n");
return 0;

セミコロンは、C言語における処理の終わりを表す記号です。

ドラゴンボール風にたとえるなら、セミコロンは技を1回出し終えた合図です。

C言語では、多くの命令の最後にセミコロンを書きます。セミコロンを書き忘れると、どこまでが1つの処理なのか分からなくなり、コンパイルエラーになることがあります。

記号意味
;1つの処理の終わり

最初のうちは、セミコロンの書き忘れがよくあります。

Visual Studioでエラーが出たときは、まずセミコロンの付け忘れがないか確認するとよいでしょう。

\nは改行を表すエスケープシーケンス

printfの文字列の中には、\nという記号が入っています。

printf("C言語の修行を始めます。\n");

この\nは、改行を表す特殊な文字です。

つまり、文字列を表示したあと、次の表示を新しい行から始めるために使います。

今回のプログラムでは、1つ目のprintfの最後に\nがあるため、次のprintfの内容は次の行に表示されます。

C言語の修行を始めます。
Visual Studioで最初のプログラムを実行しました。

もし\nがなければ、2つのメッセージが同じ行に続けて表示される可能性があります。

ドラゴンボール風にたとえるなら、\nは表示パネルの行を切り替える合図です。1つ目のメッセージを表示したあと、次の行へ移動してから次のメッセージを表示します。

エスケープシーケンスとは何か

\nのように、バックスラッシュから始まる特殊な文字の組み合わせを、エスケープシーケンスと呼びます。

環境によっては、バックスラッシュが円記号のように表示されることがあります。見た目が違っても、C言語では同じ役割として扱われることがあります。

主なエスケープシーケンスには、次のようなものがあります。

記号意味
\a警告音
\bバックスペース
\n改行
\tタブ
\\文字としてのバックスラッシュ
\?文字としての?マーク
\"ダブルクォーテーション
\'シングルクォーテーション
\0ヌル文字

今回のプログラムで使っているのは\nです。

最初の段階では、まず\nが改行を表すことを覚えておけば大丈夫です。今後、表のように文字をそろえて表示したいときには\tなども使うことがあります。

図:printf、セミコロン、\n、return 0の役割

この図が示していること

この図では、printf、セミコロン、\n、return 0がそれぞれどのような役割を持っているかを表しています。

printfは文字を表示する関数です。セミコロンは1つの処理の終わりを示します。\nは改行を表し、次の表示を新しい行から始めるために使います。return 0は、プログラムが正常に終わったことをOSへ知らせる役割を持っています。

C言語の短いプログラムでも、これらの記号や命令が組み合わさって、きちんとした処理の流れを作っています。

return 0は正常終了の合図

最後に、次の行を見ていきます。

return 0;

returnは、関数の処理を終えて、呼び出し元に値を返すための文です。

今回のmain関数は、int main(...)という形で始まっています。intは整数を返すという意味です。そのため、main関数の最後では整数の値を返します。

main関数は、プログラムを実行したときにOSから呼び出される特別な関数です。そのため、main関数がreturn 0を実行すると、OSに対してプログラムは正常に終了しましたと伝えることになります。

ドラゴンボール風にたとえるなら、return 0は修行装置に向かって、修行は問題なく完了しましたと報告する合図です。

書き方意味
return関数を終了して値を返す
0正常終了を表す値
return 0;プログラムが正常に終わったことを知らせる

一般的に、main関数で0を返すと正常終了を表します。

0以外の値を返す場合は、何らかの異常があったことを表すために使われることがあります。

コメントは人間のためのメモ

今回のプログラムには、日本語のコメントが書かれています。

// コンソールに日本語メッセージを表示する

コメントは、プログラムの説明を書くためのものです。

C言語では、//から行末までがコメントになります。コメントはコンピュータが実行する命令ではありません。あくまで人間が読むためのメモです。

ドラゴンボール風に言えば、コメントは巻物の余白に書いた説明です。

この技は何のために使うのか、この行では何をしているのか、あとから見ても分かるように補足しておく役割があります。

書き方意味
// コメントその行の説明を書く
コメントの内容人間が読むためのメモ
実行への影響ない

コメントをうまく使うと、プログラムが読みやすくなります。

特に学習中は、どの行が何をしているのかをコメントで書いておくと、あとから復習しやすくなります。

インデントは見やすさを整えるための字下げ

main関数の中の処理は、少し右にずれて書かれています。

int main(int argc, char** argv) {
    // コンソールに日本語メッセージを表示する
    printf("C言語の修行を始めます。\n");
    printf("Visual Studioで最初のプログラムを実行しました。\n");

    // プログラムが正常に終わったことを示す
    return 0;
}

このような字下げをインデントと呼びます。

インデントは、プログラムの構造を見やすくするために使います。main関数の中にある処理を少し右にずらして書くことで、どこからどこまでがmain関数の中身なのかが分かりやすくなります。

ドラゴンボール風にたとえるなら、インデントは修行メニューを見やすく整理するための段落です。

修行場の入口、実際の修行内容、終了報告がきちんと整理されていれば、どの順番で動くのかが分かりやすくなります。

C言語では、インデントがなくても動く場合があります。しかし、読みやすいプログラムを書くためには、インデントを整えることがとても大切です。

C言語プログラムは部品の役割を知ると読みやすくなる

今回のChap1_01/main.cは、とても短いプログラムです。

しかし、その中にはC言語の基本がしっかり入っています。

要素役割
#include <stdio.h>printfを使うための準備
int main(int argc, char** argv)プログラムの開始地点
{ }処理の範囲
printf文字列を表示する関数
"..."表示する文字列
\n改行
;処理の終わり
return 0;正常終了を知らせる
// コメント人間向けの説明
インデント構造を見やすくする字下げ

最初は、すべてを一度に覚えようとしなくても大丈夫です。

まずは、#includeで準備し、main関数から始まり、printfで表示し、return 0で終わる、という流れをつかみましょう。

C言語のプログラムは、ひとつひとつの部品の役割が分かってくると、急に読みやすくなります。

修行でいえば、最初は謎の記号に見えていた巻物が、だんだん技の説明書として読めるようになっていく感覚です。

ここまで理解できれば、次に変数、計算、条件分岐、繰り返しと進んだときにも、C言語のプログラムを落ち着いて読めるようになります。