🫖

C言語を学び直す

2024/12/01に公開

一時期C言語にハマってたがしばらくさわってなかったので学び直しの意味で書いてく。


C言語は、1970年代初頭にデニス・リッチーによって開発されたプログラミング言語で、システムプログラミングや組み込みシステムで広く使われている。CはUNIXオペレーションシステムを開発するために作られた言語。シンプルさと柔軟性から、多くのプログラミング言語に影響を与え、現在でも現役で使われている。

C言語の特徴

  1. コンパイル型言語
    C言語はコンパイル型言語であり、ソースコードを機械語に変換するコンパイラが必要。この仕組みにより実行速度が速い。
  2. システムレベルのプログラムが可能
    メモリ管理やハードウェア制御が可能なため、OSやデバイスドライバの開発によく使用される。
  3. 移植性が高い
    C言語は多くのプラットフォームで利用可能で適切に書かれたコードは異なるプラットフォームでも動作する。
  4. 簡潔で表現力豊か
    C言語は少ないキーワードで豊富な表現が可能。その反面、プログラマーに多くの責任を求められる(例:メモリ管理やポインタ操作)。

基本構文

C言語のプログラムは、関数を基本単位として構成されている。

#include <stdio.h>

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

このプログラムを分解して説明すると

  1. #include <stdio.h>
  • 標準入出力を扱うライブラリ(ヘッダファイル)をインクルードする。
  • printf関数を利用するために必要。
  1. int main()
  • プログラムのエントリーポイント。
  • main関数がプログラムの実行を開始。

3. printf("Hello, World!\n");

  • 標準出力に文字列を出力する関数。
  • \nは改行文字。
  1. return 0;
  • プログラムの終了ステータスを返す。
  • 通常、0は正常終了を意味する。

データ型と変数

以下に主要なデータ型を示す。

データ型 意味 サイズの例
int 整数 4バイト
float 単精度浮動小数点数 4バイト
double 倍精度浮動小数点数 8バイト
char 文字 1バイト

#include <stdio.h>

int main() {
    int age = 25;
    float height = 172.5;
    char initial = 'A';

    printf("Age: %d, Height: %.1f, Initial: %c\n", age, height, initial);
    return 0;
}
  • %d:整数のフォーマット指定子
  • %.1f:小数点以下1桁の浮動小数点数を表示
  • %c:文字を表示

制御構文

条件分岐:if文

#include <stdio.h>

int main() {
    int score = 85;

    if (score >= 90) {
        printf("Excellent\n");
    } else if (score >= 60) {
        printf("Pass\n");
    } else {
        printf("Fail\n");
    }
    return 0;
}

繰り返し:for文

#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {
        printf("Count: %d\n", i);
    }
    return 0;
}

ポインタ

ポインタはC言語の特徴的な機能の一つ。ポインタはメモリのアドレスを扱うため、柔軟かつ強力なプログラムを作成できる。

#include <stdio.h>

int main() {
    int value = 42;
    int *ptr = &value;

    printf("Value: %d, Address: %p\n", value, (void*)ptr);
    return 0;
}

ここでは、&valueがvalueのアドレスを取得し、それをポインタ変数ptrに格納している。

まとめ

C言語はシンプルさと柔軟性を兼ね備えた強力なプログラミング言語。システムプログラミングや組み込み開発など、さまざまな分野で現在も広く使用されている。その基本構文や特徴を学ぶことで、他の言語では得られない深い理解やスキルを身につけることができるので今後も学習を続けていこうと思う。

Discussion