普通定義結構的方法
//定義結構Date1
struct Date1
{
int year; //年
int mouth; //月
int day; //日
};
int main()
{
struct Date1 birth1={2002,6,28}; //聲明Date1類型的結構變量birth1,同時指派
printf("某個漂亮小姐姐的生日是%d年%d月%d日\n",birth1.year,birth1.mouth,birth1.day);//列印結構變量birth2
return 0;
}
輸出結果:

那每次要聲明結構Date1類型的變量,都要寫struct Date1 …(變量名)…,豈不是好煩?
使用typedef定義結構
使用typedef定義結構,會讓聲明語句變得簡潔,請看下面的代碼:
#include <stdio.h>
//定義Date2結構類型,用DATE作為結構變量聲明語句
typedef struct Date2
{
int year; //年
int mouth; //月
int day; //日
}DATE;
int main()
{
DATE birth2={2001,6,17}; //用代号DATE聲明Date2結構變量birth2
printf("噢~記錯了是%d年%d月%d日\n",birth2.year,birth2.mouth,birth2.day);//列印結構變量birth2
return 0;
}
輸出結果:
那麼每次聲明Date系列結構變量,struct Date1就換成了DATE,是不是友善多了(如果聲明語句使用次數很多的話)。同時,這麼一來Date2就變得“徒有其名”了,以後的聲明完全用不上。那就沒必要“浪得虛名”了,可以省略掉。不過最好在附近打上注釋,否則自己都忘了,這個結構幹啥用的。
#include <stdio.h>
//定義Date2結構類型,用DATE作為結構變量聲明語句
typedef struct
{
int year; //年
int mouth; //月
int day; //日
}DATE;
int main()
{
DATE birth2={2001,6,17}; //用代号DATE聲明Date2結構變量birth2
printf("噢~記錯了是%d年%d月%d日\n",birth2.year,birth2.mouth,birth2.day);//列印結構變量birth2
return 0;
}
輸出結果(跟上面一模一樣):
希望以後師妹不要學C語言,不然我記錯她的生日怕是會被打死。typedef的用法并沒有那麼膚淺。還可以用來定義自己喜歡的變量類型名。
typedef定義普通變量類型名
上代碼塊:
#include <stdio.h>
typedef int YEAR ;//以後就可以用YEAR來聲明整型(int)變量了
typedef float SCORE;// 以後就可以用SCORE來聲明單精度浮點型型(float)變量了
int main()
{
YEAR y=2020;
SCORE s=150;
printf("祝師妹%d聯考,科科%.0f,旗開得勝!Yeah!",y,s);
return 0;
}
輸出結果: