型の再定義

概要

型の再定義とは、型名などを別の型名に変更することをいいます。
型の再定義を行うにはtypedefを使用し、
これによって型名を任意の型名に変更することができます。
この型の再定義は、型名だけではなく、
構造体の名前を変更することもできます。
型の再定義は長いと感じる型名に対して、よく使用されています。

書式

typedef 既存の型名 新しい型名;

宣言例

以下の宣言例1はint型をniに変更、宣言例2と3はstruct test_scoreを TestScore に変更しています。

宣言例1

typedef int ni;

宣言例2

typedef struct test_score { char m_Name[16]; // 名前 int m_Japanese; // 国語 int m_English; // 英語 int m_Science; // 理科 int m_Socialstudies; // 社会 int m_Mathematics; // 数学 } TestScore;

宣言例3

typedef struct test_score { char m_Name[16]; // 名前 int m_Japanese; // 国語 int m_English; // 英語 int m_Science; // 理科 int m_Socialstudies; // 社会 int m_Mathematics; // 数学 };

使用例

typedef struct test_score TestScore; #include <stdio.h> #include <string.h> // 学校成績の構造体化 // 型変換でstruct test_score をTestScoreに変更する typedef struct test_score { char m_Name[16]; int m_Japanese; int m_English; int m_Science; int m_Socialstudies; int m_Mathematics; } TestScore; // int型を型変換でniに変更する typedef int ni; /* テストの成績の表示 引数: test_info 学校成績データ 戻り値: なし 内容: 引数で渡された学校成績データを 画面に表示する */ void DispTestScore(TestScore test_info) { printf("%sの成績\n", test_info.m_Name); printf("国語 = %d点\n", test_info.m_Japanese); printf("英語 = %d点\n", test_info.m_English); printf("英語 = %d点\n", test_info.m_Science); printf("社会 = %d点\n", test_info.m_Socialstudies); printf("数学 = %d点\n", test_info.m_Mathematics); } int main(void) { TestScore test; // 構造体の宣言 ni val = 0; // ni型(int型)の宣言 printf("val = %d\n", val); strcpy_s(test.m_Name, "山田太郎"); test.m_Japanese = 100; test.m_English = 90; test.m_Science = 50; test.m_Socialstudies = 70; test.m_Mathematics = 40; DispTestScore(test); return 0; }