我 們 在 前 一 章 介 紹 過 陣 列 ,也 說 明 了 陣 列 對 於 大 量 的 資 料 處 理 有 相 當 大 的 助 益 ,但 大 部 份 的 程 式 設 計 領 域 中 ,會 用 到 不 少 的 資 料 集 合 , 例 如 我 們 個 人 資 料 是 由 個 人 的 身 份 字 號 , 姓 名 , 性 別 , 年 齡 , 地 址 , 電 話 等 資 料 所 組 成 ,如 僅 靠 陣 列 來 處 理 ,會 顯 得 雜 亂 ,不 易 管 理 .幸 好 C 語 言 提 供 了 結 構 ( structure ) 的 功 能 , 使 得 程 式 在 處 理 這 類 的 資 料 集 合 有 較 佳 的 效 果 ,且 結 構 也 會 在 我 們 未 來 的 程 式 設 計 的 過 程 中 佔 有 舉 足 輕 重 的 地 位 ,所 以 好 好 的 學 習 結 構 是 本 章 的 任 務 .
10-1 結 構 ( structure)
10-1-1 結 構 的 宣 告 與 使 用 規 則
<1>
結 構 的 宣 告 方 式 如 下 所 述 :
struct 結構名稱 { . . 結構所屬成員 . . }; struct 結構名稱 結構變數名稱 ; 或 struct 結構名稱 { . . 結構所屬成員 . . }結構變數名稱; 例如: example 10-1-1: struct personal { int id[10]; char name[8]; int age; char sex; char address[20]; char tel[12]; }; struct personal taipei; 或 example 10-1-2: struct personal { int id[10]; char name[8]; int age; char sex; char address[20]; char tel[12]; }taipei;
<3> 結 構 的 成 員 其 資 料 型 態 可 以 使 用 整 數 ,浮 點 數 及 字 元 ,也 可 使 用 陣 列 與 指 標 變 數 . 另 外 結 構 變 數 可 使 用 陣 列 變 數 ,且 可 一 次 宣 告 多 個 .
<4> 結 構 的 名 稱 與 結 構 變 數 名 稱 的 命 名 方 式 同 程 式 中 所 使 用 之 變 數 ,請 參 考 相 關 之 章 節 .
<5> 結 構 的 宣 告 與 使 用 亦 分 為 內 ,外 部 .所 謂 內 部 宣 告 即 表 示 結 構 的 宣 告 在 程 式 的 { } ( 括 號 ) 內 完 成 ,反 之 ,如 果 結 構 的 宣 告 在 程 式 的 { } ( 括 號 ) 外 完 成 稱 外 部 宣 告 .內 外 部 結 構 之 使 用 同 內 外 部 變 數 ,請 參 考 相 關 之 章 節 .
10-1-2 結 構 的 使 用
我 們 可 以 利 用 example 10-1-1 或 是 example 10-1-2 的 方
式 來 作 結 構 變 數 taipei 的 宣 告 ,當 結 構 變 數 taipei 宣 告 完 成 後 即 表 示 其 成 員 包 含 下 列 六 項
:
taipei.id ( 或 taipei->id ) taipei.name ( 或 taipei->name ) taipei.age ( 或 taipei->age ) taipei.sex ( 或 taipei->sex ) taipei.address ( 或 taipei->address ) taipei.tel ( 或 taipei->tel )
Example 10-1-3 : #includemain() { struct personal { char id[10]; char name[8]; int age; char sex; char address[20]; char tel[12]; } taipei; printf("Please input your id : "); gets(taipei.id); printf("\nPlease input your name : "); gets(taipei.name); printf("\nPlease input your address : "); gets(taipei.address); printf("\nPlease input your telephone number : "); gets(taipei.tel); printf("\nPlease input your sex ( M or F ) : "); scanf("%c",&taipei.sex); printf("\nPlease input your age : "); scanf("%d",&taipei.age); printf("\nYour id : %s\n",taipei.id); printf("Your name : %s\n",taipei.name); printf("Your age : %d\n",taipei.age); printf("Your sex : %c\n",taipei.sex); printf("Your adderss : %s\n",taipei.address); printf("Your telephone number : %s\n",taipei.tel); } 執 行 結 果 : Please input your id : 007 Please input your name : Mike Please input your address : Taipei Please input your telephone number : 12345678 Please input your sex ( M or F ) : M Please input your age : 29 Your id : 007 Your name : Mike Your age : 29 Your sex : M Your adderss : Taipei Your telephone number : 12345678
10-2 組 合 ( union )
待 續 !!!!!!!
Example 10-2-1 :
Example 10-2-2 :
10-3 定 義 新 的 資 料 型 態 ( typedef )
待 續 !!!!!!!
Example 10-3-1 :