| 12 結構與列舉型態

34
C 語語語語語語 12 語語語語語語語

description

| 12 結構與列舉型態. 12.1 建立與使用結構. | struct 與結構宣告定義. 12.1.1 建立結構. struct stname { type1 membername1 ; type2 membername2 ; … typen membernamen ; } ;. struct 關鍵字表示即將宣告一個自訂的結構型態 stname 為新建立的結構型態識別名稱 大括弧內逐一列舉結構成員的資料型態與成員名稱 結構的宣告最後以「 ; 」做結尾。. |  .  引用結構型態 >>. 12.1 建立與使用結構. - PowerPoint PPT Presentation

Transcript of | 12 結構與列舉型態

C 語言入門經典

| 12  結構與列舉型態

C 語言入門經典  引用結構型態 >> |  

| struct 與結構宣告定義12.1 建立與使用結構

12.1.1 建立結構

struct stname{

type1 membername1 ;type2 membername2 ;…typen membernamen ;

} ;

• struct 關鍵字表示即將宣告一個自訂的結構型態• stname 為新建立的結構型態識別名稱• 大括弧內逐一列舉結構成員的資料型態與成員名稱• 結構的宣告最後以「 ; 」做結尾。

C 語言入門經典  定義結構處理表格 >> << struct 與結構宣告定義  

|引用結構型態

struct stname sta ;

sta.membername1 ;

• sta 被宣告為 stname 結構變數• 透過 sta 存取其中定義的成員

• 引用 stname 結構的第 1 個成員 membername1

12.1 建立與使用結構

12.1.1 建立結構

C 語言入門經典

5

4

3

2

1

 範例:結構示範 >> << 引用結構型態  

|定義結構處理表格12.1 建立與使用結構

12.1.1 建立結構

C 語言入門經典

5

4

3

2

1

 初始化結構 >> << 定義結構處理表格  

6

|範例 : 結構示範

title:VB 2008ISBN:123-456-789-00-11price:550pages:600author:Tom

12.1 建立與使用結構

12.1.1 建立結構

C 語言入門經典  範例:結構成員初始化 >> << 範例:結構示範  

|初始化結構12.1 建立與使用結構

12.1.2 初始化結構成員

struct book b1={"VB 2008", "123-456-789-00-11",

550,600,"Tom"};

C 語言入門經典

2

1

 結構定義與宣告同時完成 >> << 初始化結構  

|範例:結構成員初始化12.1 建立與使用結構

12.1.2 初始化結構成員

C 語言入門經典

3

2

1

 範例:結構指定 >> << 範例:結構成員初始化  

|結構定義與宣告同時完成

struct book b ;

12.1 建立與使用結構

12.1.2 初始化結構成員

C 語言入門經典

3

2

1

 結構陣列語法 >> << 結構定義與宣告同時完成  

|範例:結構指定

title:VB 2008 ISBN:123-456-789-00-11 price:550 pages:600 author:Tom

12.1 建立與使用結構

12.1.2 初始化結構成員

C 語言入門經典  範例:結構陣列 >> << 範例:結構指定  

|結構陣列語法12.1 建立與使用結構

12.1.3 結構陣列

struct book books[6] ;

books[0].title

• 變數 books 是一個 book 結構的陣列• 可以儲存 6 筆書籍資料

• 取得 books 結構陣列中,第 1 個 book 結構的 title 成員

C 語言入門經典

3

2

1

 範例:全域結構 >> << 結構陣列語法  

|範例:結構陣列12.1 建立與使用結構

12.1.3 結構陣列

C 語言入門經典  結構型態引數宣告 >> << 範例:結構陣列  

|範例:全域結構12.1 建立與使用結構

12.1.4 全域結構

C 語言入門經典

3

2

1

 範例:結構型態引數 >> << 範例:全域結構  

|結構型態引數宣告12.2 結構型態與函數

void funname(struct stname sb){

…}

• struct 關鍵字宣告• stname 是結構名稱• sb 是結構變數

C 語言入門經典

5

4

3

2

1

 範例:回傳結構型態 >> << 結構型態引數宣告  

|範例:結構型態引數12.2 結構型態與函數

b

C 語言入門經典   typedef >> << 範例:結構型態引數  

|範例:回傳結構型態12.2 結構型態與函數

VB 2008123-456-789-00-11150 600 Tom

C 語言入門經典

5

4

3

2

1

 範例: typedef 示範 >> << 範例:回傳結構型態  

6

7

8

9

10

11

12

| typedef12.3 定義型態名稱

void showStruct(struct book sb){

…}

typedef datatype typename ;

typedef struct book KBOOK ;

• 結構命名冗長麻煩

• typedef 關鍵字定義自訂的型態• datatype 是資料型態名稱• typename 為自訂的型態名稱

C 語言入門經典

3

2

1

  typedef 與型態名稱宣告 >> << typedef   

|範例: typedef 示範

VB 2008 680

title:VB 2008 ,pages:680

12.3 定義型態名稱

C 語言入門經典  巢狀 struct >> << 範例: typedef 示範   

| typedef 與型態名稱宣告

typedef struct book{

char title[24] ;int price ;

} kbook ;

12.3 定義型態名稱

• 以 typedef 關鍵字定義結構

• 最後一行指定 kbook 為結構名稱

C 語言入門經典  範例:巢狀式結構 >> << typedef 與型態名稱宣告  

|巢狀 struct12.4 巢狀式結構

struct st{

struct nestst smember1 ;…

} ;

• st 是一個結構 

• nestst 亦是一個結構,它是 st 的成員

C 語言入門經典

4

3

2

1

 巢狀結構初始化 >> << 巢狀 struct   

|範例:巢狀式結構

computer:C language,123456789comic:Spider-Man,1122334455

6

5

12.4 巢狀式結構

C 語言入門經典  宣告結構指標 >> << 範例:巢狀式結構  

|巢狀結構初始化

struct lib libbooks ={

{"Java","j123456789"},{"Super-Man","s1122334455"}

} ;

12.4 巢狀式結構

C 語言入門經典

5

4

3

2

1

 指標結構 >> << 巢狀結構初始化  

|宣告結構指標12.5 指標與結構

12.5.1 結構指標

struct xtype *stptname ;

•struct 表示要宣告一個 struct 型態的指標•xtype 為這個結構的型態名稱

C 語言入門經典

5

4

3

2

1

 範例:指標與結構 >> << 宣告結構指標  

6

7

8

9

10

11

12

|指標結構

struct book{

char title[24] ;char ISBN[18] ;int price ;

}

struct book *bb = &books ;

• b 是 book 型態的指標變數• b 儲存 book 結構的位址資訊 &books

b->title

•「 -> 」 取代 「 . 」 即可存取其中的 title 成員

12.5 指標與結構

12.5.1 結構指標

C 語言入門經典  結構型態陣列宣告 >> << 指標結構  

|範例:指標與結構

books 位址: 0240FF20title=C languageISBN=11-22-33-44-55price=590

C language11-22-33-44-55

590 5

4

3

2

1

6

7

8

12.5 指標與結構

12.5.1 結構指標

C 語言入門經典

5

4

3

2

1

 指標與結構陣列 >> << 範例:指標與結構  

6

7

8

9

10

11

12

|結構型態陣列宣告12.5 指標與結構

12.5.2 結構陣列與指標

struct book books[6] ;

• Struct 表示用來儲存結構

• books 本身的值是第一個元素的位址

C 語言入門經典

5

4

3

2

1

 列舉宣告 >> << 結構型態陣列宣告  

|指標與結構陣列12.5 指標與結構

12.5.2 結構陣列與指標

books 位址: 0240FF00

title=C languageISBN=11-22-33-44-55price=590title=JavaISBN=123456789price=650

C 語言入門經典  宣告列舉型態變數 >> << 指標與結構陣列  

|列舉宣告12.6 列舉

enum ename{

ec1 ,ec2 ,…ecn

} ;

• enum 宣告列舉關鍵字, ename 是列舉的識別名稱• 大括弧內部的 ec1 等項目則是整數型態的列舉常數名稱• 列舉常數的第一個成員為 0 ,接下來逐一遞增• ec1 代表 0 , ec2 代表 1 ,以下類推• 列舉常數的值無法被更改。

4

3

2

1

12.6.1 建立列舉

C 語言入門經典  範例:列舉示範 >> << 列舉宣告  

|宣告列舉型態變數

enum ename evar ;evar=ec1 ;

• evar 是一個列舉型態變數

12.6 列舉

12.6.1 建立列舉

C 語言入門經典

4

3

2

1

 範例:列舉值比對 >> << 宣告列舉型態變數  

|範例:列舉示範

0123456

w:4

12.6 列舉

12.6.1 建立列舉

C 語言入門經典

4

3

2

1

 列舉變數的宣告 >> << 範例:列舉示範  

|範例:列舉值比對

5今天星期 六

12.6 列舉

12.6.1 建立列舉

C 語言入門經典  範例:列舉設定 >> << 範例:列舉值比對  

|列舉變數的宣告12.6 列舉

12.6.2 列舉常數的設定

enum week{

mon,tue,wed,thu,fri,sat,sun

} week1,week2;

• week1 以及 week2 均是 week 列舉變數

C 語言入門經典

4

3

2

1

 初始化取代預設值 >> << 列舉變數的宣告  

|範例:列舉設定

week1:4,week2:3

12.6 列舉

12.6.2 列舉常數的設定

C 語言入門經典  範例:列舉初始化設定 >> << 範例:列舉設定  

|初始化取代預設值

enum week{

mon=100,tue=200,…sun=700

}

12.6 列舉

12.6.2 列舉常數的設定

C 語言入門經典

4

3

2

1

 |<< 初始化取代預設值 

|範例:列舉初始化設定

week1:300,week2:301

12.6 列舉

12.6.2 列舉常數的設定