1. C言語の��要と歴史的意義
C言語は、汎用性が高く、プログラムの実行効率に優れた手続き型プログラミング言語です。高水準言語としての記述のしやすさと、アセンブラに近いハードウェア制御能力を兼ね備えており、「高水準言語の中のアセンブラ」と称されるほどです。1972年にデニス・リッチー氏がベル研究所で開発し、Unix OSの移植性を高める目的で生まれました。
C言語は、その後のC++、Java、C#などの言語に大きな影響を与え、システムプログラミングや組み込み開発など、パフォーマンスが求められる分野で未だに广泛に活用されています。さらに、コンピュータ内部の動作原理を理解するための重要な学習手段にもなります。
| 年 | イベント | 主な特徴 |
|---|---|---|
| 1972年 | C言語の誕生 | B言語を基に開発。Unix OSのカーネル再実装のため。 |
| 1978年 | K&R C | The C Programming Language 共著出版。非公式標準として広く利用。 |
| 1989年 | ANSI C(C89) | 関数プロトタイプ、void型、constなど導入。ISOでもC90として採択。 |
| 1995年 | C95(AMD1) | ワイド文字支持(wchar_t、<wctype.h>など)。 |
| 1999年 | C99 | インライン関数、_Bool型、long long、//コメント、可変長配列、柔軟な宣言位置。 |
| 2011年 | C11 | スレッドローカル変数(_Thread_local)、ジェネリックマクロ(_Generic)、匿名構造体/共用体、境界チェック関数群。 |
| 2017年 | C17(C18) | 主にC11の仕様バグ修正。新機能は導入されていない。 |
| 2023年 | C23(ISO/IEC 9899:2023) | gets関数の削除、#embed指示子、enumの強化、nullptr定数。 |
| 今後 | C2Y(仮称) | 継続的な言語・標準ライブラリの改善が進行中。 |
2. 主要なC言語対応コンパイラ
- MSVC(Visual Studio 2022 に内蔵) → Windows向け最適化された生成コード、統合開発環境が充実。導入・設定が容易。
- Clang(Apple Clang in Xcode) → macOS/iOS開発に標準搭載。FASTモードや静的解析が強力。
- GCC(GNU Compiler Collection) → LinuxやUnix系OSで広く利用。オープンソース・クロスコンパイル対応。
- CLion(CMakeベース) → プロジェクト管理にCMakeを使用。GCC/Clangなど複数バックエンドに対応。
3. Visual Studio 2022 での開発環境 setup
- プロジェクトの作成 「新しいプロジェクトの作成」→「空のプロジェクト」→ 名前・保存先を指定し作成。
- ソースファイルの追加
ソリューションエクスプローラーで右クリック →「追加」→「新しい項目」→「C++ファイル(.cpp)」を選択 → 拡張子を
.cppから.cに変更し保存。 - ヘッダファイルの追加 同様に「追加」→「新しい項目」→「ヘッダファイル(.h)」を選択。 → 宣言やマクロ定義など、インターフェース部分を記述します。
4. 初めてのC言語プログラム
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
printf("C言語学習を開始しました。\n");
printf("今後ともよろしくお願い致します。\n");
return 0;
}
#include <stdio.h>:標準入出力関数群(printfなど)を宣言。int main(void):プログラムのエントリーポイント。printf(...):指定された文字列をコンソールに出力。
5. main関数の要点
- 実行可能プログラムには、必ず1つだけ main関数が存在する必要があります。
- 複数の.cファイルを含むプロジェクトでも、main関数は全体で1つに制限されます。
- 戻り値として通常 0 を返し、正常終了をOSに通知します。
例:
int main(void)
{
return 0;
}
6. printf関数とフォーマット指定子
printf関数は、_('パターン文字列', 引数...) の形式で使用され、文字列中のフォーマット指定子と引数を対応付けて出力します。
#include <stdio.h>
int main(void)
{
int num = 42;
char letter = 'Z';
double pi = 3.141592;
printf("文字:%c\n", letter); // %c → char型
printf("整数:%d\n", num); // %d → int型
printf("浮動小数:%lf\n", pi); // %lf → double型
return 0;
}
標準ライブラリ関数について
標準ライブラリ関数は、C言語仕様で定められた一連の関数で、開発者が再利用可能な高品質な実装(実行コードはラiburaryファイル群に格納)を活用できます。それぞれの関数は対応するヘッダファイルに宣言が記載されているため、使用する前に #include で読み込む必要があります。
代表的なヘッダファイル一覧:
<stdio.h>:標準入出力(printf, scanf, freopenなど)<stdlib.h>:動的メモリ確保、乱数発生、コマンド実行など<string.h>:文字列操作(strcpy, strcat, strlenなど)
公式ドキュメント:C reference - Legacy C library