型の再定義
概要
型の再定義とは、型名などを別の型名に変更することをいいます。
型の再定義を行うには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;
}