標籤:自訂資料類型 core 變數 zha arp 必須 day 聲明 標識符
基本類型:整型、字元型、實型、雙精確度型和空值型
派生型:指標和數組
使用者構造類型
使用者定義型別:對已有的類型,另外說明一個新的類型標識符。
結構體:把具有相互關係的不同類型的資料群組成一個有機的整體
共用體:又稱聯合體,使幾種不同類型的變數共用一段儲存空間。
14.1 用typedef說明一種新類型名
typedef 類型名 標識符;
作用: 用“標識符”來代表已存在的“類型名”,並未產生新的資料類型,原有的類型名依然有效。
例如:typedef int INTERGER;
INTERGER m,n; 等價於 int m, n;
如:typedef char *CHARP;
CHARP p; 等價於char *p;
14.2 結構體類型
如:一條學生記錄(student),包含如下資料項目:姓名(name):字串、性別(sex):字元型、出生日期(birthday):date結構體、四門課成績(SC):一維實型數組
結構體是一種構造資料類型
用途:把不同類型的資料群組合成一個整體——自訂資料類型
結構體類型的變數、數組和指標變數的定義
1.緊跟類型說明之後定義變數
struct student{ char name[20]; struct date birthday; char sex; int score[4];}std, pers[3], *pStd;
結構體變數中的各成員在記憶體中按說明的順序依次存放
2.聲明無名結構體時直接定義變數,即將其中的student省略掉
struct date{ int year; int month; int day;};struct student{ char name[20]; struct data birthday; char sex; int score[4]; };
結構體嵌套定義
struct student{ char name[20]; struct { int year; int month; int day; }birthday; char sex; int score[4];};
3.先聲明結構體類型,再使用類型定義變數
struct student
{
…………
};
struct student std, pers[3], *pStd;
4.使用typedef重新聲明一個結構體類型名,然後用新類型名字定義變數
typedef struct{……}student;/Student 是結構體的類型的一個新名字而已,如 int char 他們一樣,不用再寫structstudent std, pers[3], *pStd;
結構體類型的變數、數組賦初值
1.結構體變數賦初值
- 按順序在花括弧裡給對應的成員變數賦初值
- 賦初值必須一一對應
- 不允許跳過前面的成員變數,只給前面部分賦初值,則後面系統預設給零
struct date{ int year; int month; int day;};struct student{ char name[20]; char sex; struct date birthday; float score[4];};struct studentstd1={"Li Ming",‘M‘,1992,10,1,95.5,60,70,88.5},std2={"Liu Qiang", ‘M‘, {1995,10,1},{95.5,60,70,88.5}},std3={"Zhang Ya",‘F‘, {1995},{95.5,60}};
C語言 結構體 共用體和使用者自訂類型