型の再定義

■型の再定義

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

		●型変更の書式
			typedef 既存の型名 新しい型名;

		●型変更の例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;

	変更例1はint型をniに変更、変更例2と3は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);
	}

	void main(void)
	{
		TestScore test;		// 構造体の宣言
		ni aaaa = 0;		// ni型(int型)の宣言

		printf("aaaa = %d\n", aaaa);

		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);
	}