Microsoft PowerPoint - C-Ch11.ppt

Similar documents
01

untitled

CC213

台湾项目书

Microsoft Word 年6月號墾汀排版.doc

2

untitled

untitled

說 明, 成 個 體 統 才 是! 你 痰 迷 了 心, 脂 油 蒙 了 竅, 國 孝 家 孝 兩 重 在 身, 就 把 個 人 送 來 了 這 會 子 被 人 家 告 我 們, 我 又 是 個 沒 腳 蟹, 連 官 場 中 都 知 道 我 利 害 吃 醋, 如 今 指 名 提 我, 要 休 我,

新・明解C言語入門編『索引』

春 新 春 年 貨 年 菜 來 這 買 市 場 超 人 氣 美 食 增 添 豐 富 團 圓 好 滋 味 來 臺 北 過 好 年 2 月 4 日 熱 鬧 登 場 盡 情 揪 團 享 受 11 處 商 圈 新 春 採 買 樂 趣 妝 點 花 樣 生 活 花 開 富 貴 過 好 年 最

C 1

untitled

讀 經 進 度 表 ( : 一 年 讀 經 進 度, : 二 年 讀 經 進 度 ; 完 成 後 請 圈 選 喔! ) Sun Mon Tue 西 1 西 2 西 3 西 4 雅 2 帖 前 1 帖 前 2 雅 3 雅 4 加 1 加 2 加 3 來 7 來

Instruction_8723_8725_8729

(Microsoft Word \246~\253\327\276\307\256\325\263\370\247i_\252k\271\316\256\325\270\263\267|\263q\271L_ _)

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

C C

目 錄 壹 緣 起 P.3 一 與 緬 甸 僑 生 結 緣 3 二 2015 緬 甸 再 見 家 鄉 服 務 隊 團 員 名 單 三 團 隊 的 服 務 理 念 四 團 隊 精 神 運 作 與 訓 練 五 海 外 服 務 內 容 與 運 作 模 式 5 貳 年 度 服 務 目 的 P.8

Microsoft PowerPoint - 20-string-s.pptx

交通部基隆港務局92年抵港客輪一欄表

C

untitled

Microsoft PowerPoint - C-Ch10.ppt

交通部基隆港務局92年抵港客輪一欄表

交通部基隆港務局92年抵港客輪一欄表

Microsoft Word _ doc

untitled

untitled

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

若要解決教育不平等的問題 需透過長時間的努力 長期 資源的挹注 和具使命感的領導人才投入 才有可能改善 教師的 質 與 量 是台灣教育 不 平 等 的 重 要 關 鍵 每年驪歌初唱 除了送走一屆屆的畢業生外 心中卻隱含 另一波的壓力 那就是偏鄉學校教師的出走潮 雲林華南國小校長 陳清圳 在台灣 孩

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - C-Ch08.ppt

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

交通部基隆港務局92年抵港客輪一欄表

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

交通部基隆港務局92年抵港客輪一欄表

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

穨飲食與養老_決定版_.PDF

untitled

untitled

Microsoft Word 年12月號墾汀排版.doc

C/C++ - 文件IO

CC213

nooog

中 六 同 學 清 理 儲 物 櫃 中 六 同 學 行 將 畢 業 離 校, 請 家 長 督 促 中 六 同 學 於 2016 年 2 月 22 日 ( 星 期 一 ) 前 妥 善 清 理 儲 物 櫃 內 之 各 項 物 品 家 長 日 預 告 本 年 度 之 家 長 日 將 於 1 月 31 日

交通部基隆港務局92年抵港客輪一欄表

香港乒乓總會 2018 球會聯賽賽程表 - 第二級別 Ref. Home DIVISION 2 - Round (1) Week of 2 July, 2018 Date Day Away D 紀利華木球會 CCC 輪空 Bye 不適用 N.A. D 香港理工大學職員會所

新版 明解C++入門編

中 國 語 文 鑽 石 學 歷 一 級 學 府 於 香 港 大 學 研 究 院 攻 讀 中 國 語 言 文 學 碩 士 課 程 (MACLL), 並 已 取 得 中 文 ( 榮 譽 ) 學 士 (Ba(Hon)Chi) 學 位 教 師 文 憑 (Dip.Educ.) 教 統 局 註 冊 教 師 專

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

1

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C

FY.DOC

交通部基隆港務局92年抵港客輪一欄表

3

C. p->data.a D. p.data.a 5 若需建立如圖所示的儲存結構, 以下正確的語法組是 : G q p c A. char **q, *p, c; p=&c; q=*p; C. char **q, *p, c; p=&c; q=&p; B. char *q, *p, c; p=&c;

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

Excel VBA Excel Visual Basic for Application

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

2. 參考網站 C 語言考古題 & C 的解題 程式設計學習入門 ( 網址 : c.blogspot.com/) 網站 : 星子 ACM 小窩 ( 網址 : 網站 :ACM Onli

01.indd

Microsoft PowerPoint - 02 C語言基本概述.ppt

資料結構之C語言重點複習

Microsoft PowerPoint - 02 C語言基本概述.ppt

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

C/C++语言 - 分支结构

学 的 人 数 达 到 万 人,79.5% 的 随 迁 子 女 在 公 办 学 校 就 读 但 是, 按 照 过 去 的 高 考 制 度, 这 些 学 生 只 能 回 到 户 籍 地 参 加 高 考 2010 年 7 月, 党 中 央 国 务 院 召 开 了 全 国 教 育 工 作 会

untitled

Microsoft Word - About_C_PointerAdvanced.doc

簡介 心晴行動慈善基金 於2004年由曾患抑鬱焦慮症的林建明 小姐聯同一班熱心義工成立 為香港註冊非牟利慈善團體 根據世界 衛生組織指出 抑鬱症已成為十分普遍的情緒病 但本港普羅大眾對情緒病 患仍有很大誤解 令很多患者未能及早接受適當治療 甚至白白喪失寶貴的生命 因此 本會致力向社會各階層推廣情緒健

Microsoft PowerPoint - C-Ch12.ppt

PowerPoint Presentation

Searching and Sorting

C语言的应用.PDF

C/C++语言 - C/C++数据

編 輯 室 報 告 本 期 由 將 辦 第 19 場 演 唱 會 的 陳 昇 與 獨 立 女 王 陳 珊 妮 領 軍, 一 熱 一 冷, 佐 以 藝 術 家 音 樂 人 作 家 等 七 人 的 經 驗 談, 讓 台 灣 的 如 冰 火 五 重 天, 令 人 凍 未 條 呼 應 主 題, 來 個 翻

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

Ps22Pdf

編 輯 大 意 一 本 指 引 係 配 合 中 學 華 文 課 本 編 寫 而 成, 提 供 教 師 教 學 參 考 之 用 二 本 書 編 寫 重 點 如 下 : ( 一 ) 作 者 : 詳 細 介 紹 作 者 生 平 及 成 就 ( 二 ) 題 解 : 介 紹 課 文 主 旨 及 相 關 背 景

chap07.key

Microsoft Word - ACL chapter02-5ed.docx

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

C/C++程序设计 - 字符串与格式化输入/输出

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

C/C++ 语言 - 循环

Microsoft Word - 會訊 Feb 2016


PowerPoint Presentation

华恒家庭网关方案

Microsoft Word - 04_object_Boxing_property_indexer.doc

untitled

Microsoft Word - CPE考生使用手冊 docx

Transcription:

各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告

宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子 (.) 語法 : 結構變數名稱. 成員 這是儲存 struct Car 型態的值的變數 car1

存取結構型態的成員之範例 : #include <stdio.h> /* 結構資料型態 struct Car 的宣告 */ struct Car{ int num; 宣告結構型態 double gas; }; int main(void) { struct Car car1; 宣告結構變數 } car1.num = 1234; 把值指定給成員 car1.gas = 25.5; printf(" 車牌號碼是 %d; 汽車容量是 %f \n", car1.num, car1.gas); return 0; 輸出成員的值

從鍵盤輸入成員的值之範例 : #include <stdio.h> /* 結構資料型態 struct Car 的宣告 */ struct Car{ int num; double gas; }; int main(void) { 在前面加上 & struct Car car1; printf(" 請輸入車牌號碼 \n"); scanf("%d", &car1.num); 從鍵盤輸入成員的值 printf(" 請輸入汽油容量 \n"); scanf("%lf", &car1.gas); printf(" 車牌號碼是 %d; 汽油容量是 %f \n", car1.num, car1.gas); return 0; }

11-2 結構的寫法 利用 typedef 來分割名稱 typedef 的語法 : typedef 資料型態識別字 ; 範例 : /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; 把 typedef } Car; 加在 struct Car 型態的前面 命名為 Car 型態

結構的初始化 語法 : 結構型態結構變數名稱 = { 值, 值, }; 範例 : #include <stdio.h> /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; }Car; 儲存至 num int main(void) 儲存至 gas { Car car1 = {1234,25.5}; printf(" 車牌號碼是 %d; 汽車容量是 %f \n", car1.num, car1.gas); return 0; }

把值指定給結構 對結構進行指定後, 就會逐一複製其成員的值, 並儲存至所指定的目的地 範例 : #include <stdio.h> /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; }Car; int main(void) { Car car1 = {1234, 25.5}; Car car2 = {4567, 52.2}; printf("car1 的車牌號碼是 %d 汽油容量是%f \n", car1.num, car1.gas); printf("car2 的車牌號碼是 %d 汽油容量是%f \n", car2.num, car2.gas); car2 = car1; printf(" 把 car1 指定給 car2 \n"); printf("car2 的車牌號碼變成 %d 汽油容量變成%f \n", car2.num, car2.gas); return 0; } 以其他的結構來指定

11-3 結構的大小 理解結構型態的大小 結構的大小不一定是成員大小的加總 同時, 指向大型結構的指標, 通常會小於該資料型態的大小

查詢結構型態的大小之範例 : #include<stdio.h> /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; }Car; int main(void) 查詢結構型態的大小 { printf("int 型態的大小為 %dbyte \n", sizeof(int)); printf("double 型態的大小為 %dbyte \n", sizeof(double)); printf(" 結構 structcar 型態的大小為 %dbyte \n", sizeof(car)); printf(" 指向結構 struct Car 型態的指標大小為 %dbyte \n", sizeof(car *)); return 0; } 查詢指向結構型態的指標大小

使用位元欄 (bit field) 位元欄是會影響結構大小的成員 位元欄的語法 : struct 結構型態名稱 { 資料型態識別字 : 位元數 ; 資料型態識別字 : 位元數 ; }; 範例 : typedef struct Car1{ int num; double gas; 設為 3bit 的成員 unsigned int tire : 3; unsigned int roof : 1; 設為 1bit 的成員 unsigned int color : 4; }Car1; 設為 4bit 的成員

11-4 結構的應用 把結構當做引數來用 把結構當作函數的引數來用, 各成員便會被複製並傳送 範例 :

把指向結構的指標當作引數來用 把指向結構的指標拿來當作函數的引數, 所傳送的就是位址 從指向結構的指標存取成員時, 使用成員選擇運算子 (->) 會很方便 從指向結構的指標來存取成員的語法 : 範例 : 指向結構的指標 -> 結構的成員

製作結構的陣列之範例 : #include <stdio.h> /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; }Car; 把值儲存在三個結構的各個元素 int main(void) { Car cars[3]; 宣告結構的陣列 int i; cars[0].num = 1234; cars[0].gas = 25.5; cars[1].num = 4567; cars[1].gas = 52.2; cars[2].num = 7890; cars[2].gas = 20.5; for(i=0; i<3; i++){ printf(" 車牌號碼是 %d 汽油容量是%f \n", cars[i].num, cars[i].gas); } return 0; }

以結構建立清單之範例 : #include <stdio.h> /* 結構型態 struct Car 的宣告 */ typedef struct Car{ int num; double gas; struct Car *next; }Car; int main(void) { Car car0; Car car1; Car car2; Car *pcar; car0.num = 1234; car0.gas = 25.5; car1.num = 4567; car1.gas = 52.2; car2.num = 7890; car2.gas = 20.5; car0.next = &car1; car1.next = &car2; car2.next = NULL; 以 car2 作為結尾 for(pcar = &car0; pcar!=null; pcar = pcar->next){ printf(" 車牌號碼是 %d 汽油容量是%f \n", pcar->num, pcar->gas); } return 0; } 包含指向 struct Car 型態的指標 car0 之後是 ctr1 car1 之後是 ctr2 依照排好的順序輸出結構

11-5 共同空間 關於共同空間 共同空間型態的各成員無法同時記憶值, 全體成員只能記憶住一個值 宣告共同空間型態的語法 : union 共同空間型態名稱 { 資料型態識別字 ; 資料型態識別字 ; }; 宣告時要加上 union

使用共同空間型態之範例 : #include <stdio.h> /* 共同空間型態 union Year 的宣告 */ typedef union Year{ int ad; int gengo; }Year; 命名 宣告共同空間型態 int main(void) { Year myyear; 宣告共同空間型態的變數 int a, g; printf(" 請輸入西元年份 \n"); scanf("%d", &a); myyear.ad = a; 把值儲存至 myyear 的成員 ad 後 printf(" 西元為 %d 年 \n", myyear.ad); printf(" 民國為 %d 年 \n", myyear.gengo); } printf(" 請輸入民國年份 \n"); scanf("%d",&g); myyear.gengo = g; printf(" 民國為 %d 年 \n", myyear.gengo); printf(" 西元為 %d 年 \n", myyear.ad); return 0; 成員 gengo 也變成相同的值

11-6 列舉型態 關於列舉型態 宣告列舉型態的語法 : enum 列舉型態名稱 { 識別字 1, 識別字 2, 識別字 3, } 列舉型態是一種可以把識別字當做值來儲存的型態, 例如 : enum Week{SUN, MON, TUE, WED, THU, FRI, SAT} Week; 指定列舉型態的數值 列舉型態之所以能夠儲存識別字的值, 是因為其內部具有分開處理從 0 開始逐次加一之整數值的機制

使用列舉型態之範例 : #include <stdio.h> /* 列舉型態 enum Week 的宣告 */ typedef enum Week{SUN, MON, TUE, WED, THU, FRI, SAT} Week; int main(void) { Week w; w = SUN; 宣告列舉型態 宣告列舉型態的變數 可以儲存識別字的值 switch(w){ case SUN: printf(" 是星期天 \n"); break; case MON: printf(" 是星期一 \n"); break; case TUE: printf(" 是星期二 \n"); break; case WED: printf(" 是星期三 \n"); break; case THU: printf(" 是星期四 \n"); break; case FRI: printf(" 是星期五 \n"); break; case SAT: printf(" 是星期六 \n"); break; default: printf(" 不知道是星期幾 \n"); break; } return 0; 利用識別字的功能可使程式簡明易懂 } 命名為 Week