typedef: 名前の定義

長い型名にニックネームをつける。構造体と相性抜群。

typedef
既存の型に新しい名前(別名)をつけるキーワード。
エイリアス
別名のこと。
あだ名 (Nicknames)

typedef は「あだ名(ニックネーム)」をつける機能です。 「鈴木・アレクサンダー・健太」という長い名前の友達を、毎回フルネームで呼ぶのは大変です。「ケン」というあだ名をつければ、楽に呼べますよね。 C言語でも `unsigned long long int` のような長い型や、`struct User` のような面倒な記述に、短いあだ名をつけて楽をするために使います。

詳細解説

型に名前をつける

typedef は、既存の型に新しい名前(エイリアス)をつける機能です。

unsigned long long int」のような長ったらしい型に「uint64 」のような短い名前をつけたり、構造体にシンプルな名前をつけたりして、コードの可読性を上げるために使います。

Basic Syntax
// 型に別名をつける
typedef unsigned int uint;
uint a = 100; // unsigned int a = 100; と同じ

構造体での利用

C言語では、構造体を使うたびに <code>struct Person p;</code> のように <code>struct</code> キーワードを書く必要があります。これが面倒なので、ほとんどの場合は <code>typedef</code> とセットで定義します。

Common Pattern
// 構造体とセットで使う (定番パターン)
typedef struct {
int x;
int y;
} Point;
// struct Point と書かなくて済む!
Point p1 = {10, 20};

実践テクニック

抽象化による移植性向上

環境によってサイズが変わる整数などを <code>Int32</code> のように定義し直すことで、コードを別の環境に持っていったときに修正箇所を減らせます。<code>size_t</code> や <code>uint8_t</code> も標準ライブラリで定義された typedef です。

演習課題

課題1: リファクタリング
前回の構造体のコードを、typedef を使って struct キーワードなしで使えるように書き換えてください。

合格ライン

typedefを使って型名を短くできる
構造体定義における typedef のパターンを知っている