C言語チートシート

基本データ型

サイズ 範囲
char 1 byte -128 ~ 127
int 4 byte -2,147,483,648 ~ 2,147,483,647
float 4 byte ±3.4E-38 ~ ±3.4E+38
double 8 byte ±1.7E-308 ~ ±1.7E+308

入出力関数

// 出力
printf("Hello %d\n", 10);
puts("Hello World");

// 入力
scanf("%d", &num);
gets(str);  // 非推奨!
fgets(str, size, stdin);  // 安全

制御構文

// if文
if (x > 0) {
    // 処理
} else if (x == 0) {
    // 処理
} else {
    // 処理
}

// for文
for (int i = 0; i < 10; i++) {
    // 処理
}

// while文
while (condition) {
    // 処理
}

配列とポインタ

// 配列
int arr[5] = {1, 2, 3, 4, 5};
printf("%d", arr[0]);  // 1

// ポインタ
int *ptr = &x;  // xのアドレス
*ptr = 10;      // xに10を代入

// 配列とポインタ
arr[i] == *(arr + i)  // 同じ

文字列操作

#include <string.h>

strlen(str);        // 長さ
strcpy(dst, src);   // コピー
strcat(dst, src);   // 連結
strcmp(s1, s2);     // 比較
strncpy(dst, src, n);  // 安全版

ビット演算

// 基本演算
x & y   // AND
x | y   // OR
x ^ y   // XOR
~x      // NOT
x << n  // 左シフト(×2^n)
x >> n  // 右シフト(÷2^n)

// ビットマスク
x |= (1 << n);   // nビット目をON
x &= ~(1 << n);  // nビット目をOFF
x ^= (1 << n);   // nビット目を反転

コンピュータ用語集

ASCII (アスキー)

American Standard Code for Information Interchange。英数字や記号を数値で表現する文字コード。A=65, a=97など。

CPU

Central Processing Unit (中央演算処理装置)。コンピュータの「脳」。プログラムの命令を実行する。

GUI

Graphical User Interface。マウスやタッチで操作するグラフィカルな画面。Windowsの普通の画面。

RAM (メモリ)

Random Access Memory。主記憶装置。作業机に例えられる。電源を切ると内容が消える。

アドレス (Address)

メモリ上の場所を示す「番地」。ポインタはアドレスを記憶する変数。

アルゴリズム

問題を解決するための手順や方法。料理のレシピのようなもの。

エンディアン

複数バイトのデータをメモリに並べる順序。ビッグエンディアンとリトルエンディアンがある。

コンパイラ

ソースコード(C言語など)を機械語(実行ファイル)に翻訳するプログラム。gccなど。

関数 (Function)

処理をまとめて部品化したもの。引数を受け取り、戻り値を返す。

スタック (Stack)

メモリ領域の一つ。関数のローカル変数が置かれる。後入れ先出し(LIFO)構造。

セグメンテーションフォールト

不正なメモリアクセスによるエラー。ポインタのバグでよく発生する。

バッファオーバーフロー

配列の範囲を超えてデータを書き込む脆弱性。セキュリティ攻撃に悪用される。

ヒープ (Heap)

malloc()で動的に確保するメモリ領域。使い終わったらfree()で解放する必要がある。

ポインタ (Pointer)

メモリのアドレス(番地)を記憶する変数。C言語最大の難関だが、最も強力な機能。

メモリリーク

malloc()で確保したメモリをfree()し忘れること。メモリが枯渇してPCが重くなる。

レジスタ (Register)

CPU内部の超高速な記憶領域。組み込みではハードウェアの設定用レジスタもある。

役立つ外部リンク

おすすめ開発ツール

Git

バージョン管理システム。コードの変更履歴を管理できる。高専では必須スキル。

GDB

Cのデバッガ。プログラムを一時停止して変数の中身を見られる。

Valgrind

メモリリーク検出ツール。malloc/freeの間違いを見つけてくれる。

タイピング練習

寿司打、e-typingなど。ブラインドタッチは入学前に必ずマスターすべき!