ch8 結(jié)、聯(lián)合、位運(yùn)算和枚舉類型_第1頁(yè)
ch8 結(jié)、聯(lián)合、位運(yùn)算和枚舉類型_第2頁(yè)
ch8 結(jié)、聯(lián)合、位運(yùn)算和枚舉類型_第3頁(yè)
ch8 結(jié)、聯(lián)合、位運(yùn)算和枚舉類型_第4頁(yè)
ch8 結(jié)、聯(lián)合、位運(yùn)算和枚舉類型_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 1主講教師:*個(gè)人主頁(yè):* 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 2教材:教材:c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c

2、99版)版)陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 主編主編李志蜀李志蜀 唐寧九唐寧九 李李 濤濤 主審主審清華大學(xué)出版社清華大學(xué)出版社20062006年年9 9月出版月出版 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 3本書本書內(nèi)容內(nèi)容 第第1 1章章 基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)第第2 2章章 c c語(yǔ)言的基本要素語(yǔ)言的基本要素第第3 3章章 變量名、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式變量名、數(shù)

3、據(jù)類型、運(yùn)算符和表達(dá)式第第4 4章章 c c程序基本控制結(jié)構(gòu)程序基本控制結(jié)構(gòu)第第5 5章章 函數(shù)函數(shù)第第6 6章章 數(shù)組和指針數(shù)組和指針第第7 7章章 遞歸遞歸第第8 8章章 結(jié)構(gòu)、聯(lián)合、位運(yùn)算和枚舉類型結(jié)構(gòu)、聯(lián)合、位運(yùn)算和枚舉類型 第第9 9章章 預(yù)處理命令預(yù)處理命令 第第1010章章 文件文件 第第1111章章 高級(jí)話題高級(jí)話題第第1212章章 c89 vs c99c89 vs c99實(shí)驗(yàn)實(shí)驗(yàn) (待安排)(待安排) 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章202

4、1-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 4枚舉類型枚舉類型本章主要內(nèi)容本章主要內(nèi)容arm vector tablefiqirq(reserved)data abortprefetch abortsoftware interruptundefined instructionreset0 x1c0 x180 x140 x100 x0c0 x080 x040 x00聯(lián)合聯(lián)合結(jié)構(gòu)結(jié)構(gòu)類型定義:類型定義:typedef位段位段 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c9

5、9c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 5本章的節(jié)本要求本章的節(jié)本要求 本章主要介紹本章主要介紹c語(yǔ)言的語(yǔ)言的結(jié)構(gòu)結(jié)構(gòu)、聯(lián)合聯(lián)合、枚枚舉類型舉類型、類型定義類型定義:typedef和和段位段位的基的基本概念和使用方法。本概念和使用方法。 本章要求讀者能使用本章要求讀者能使用結(jié)構(gòu)結(jié)構(gòu)、聯(lián)合聯(lián)合、枚枚舉類型舉類型、類型定義類型定義:typedef和和段位段位的編的編寫簡(jiǎn)單的應(yīng)用程序。寫簡(jiǎn)單的應(yīng)用程序。 希望讀者在計(jì)算機(jī)上調(diào)試運(yùn)行教材中希望讀者在計(jì)算機(jī)上調(diào)試運(yùn)行教材中的程序。的程序。 在網(wǎng)頁(yè):在網(wǎng)頁(yè):http:

6、/ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 68.1 結(jié)構(gòu)結(jié)構(gòu) 8.1.1概述概述 在解決實(shí)際問(wèn)題中,一組數(shù)據(jù)一般具有不在解決實(shí)際問(wèn)題中,一組數(shù)據(jù)一般具有不同的數(shù)據(jù)類型。同的數(shù)據(jù)類型。 結(jié)構(gòu)結(jié)構(gòu)是一種構(gòu)造類型,它由若干是一種構(gòu)造類型,它由若干成員成員組成的。組成的。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)

7、計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 78.1.2結(jié)構(gòu)的聲明結(jié)構(gòu)的聲明 一、結(jié)構(gòu)類型的定義一、結(jié)構(gòu)類型的定義 定義一個(gè)結(jié)構(gòu)的一般形式為:定義一個(gè)結(jié)構(gòu)的一般形式為: struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名 成員表列成員表列 ; 成員表由若干個(gè)成員組成,每個(gè)成員成員表由若干個(gè)成員組成,每個(gè)成員都是該結(jié)構(gòu)的一個(gè)組成部分。對(duì)每個(gè)都是該結(jié)構(gòu)的一個(gè)組成部分。對(duì)每個(gè)成員也必須作類型說(shuō)明,其形式為:成員也必須作類型說(shuō)明,其形式為:類型說(shuō)明符類型說(shuō)明符 成員名成員名; 成員名的命名應(yīng)符合標(biāo)識(shí)符的書寫規(guī)成

8、員名的命名應(yīng)符合標(biāo)識(shí)符的書寫規(guī)定。定。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 88.1.2結(jié)構(gòu)的聲明結(jié)構(gòu)的聲明 例如:例如: struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */float score;/* 成績(jī)成績(jī) */; 主編:主編:

9、 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 9 在上面的結(jié)構(gòu)定義中,結(jié)構(gòu)名為在上面的結(jié)構(gòu)定義中,結(jié)構(gòu)名為studenttype,此此結(jié)構(gòu)由結(jié)構(gòu)由4個(gè)成員組成,如下圖所示。個(gè)成員組成,如下圖所示。 第一個(gè)成員第一個(gè)成員為為num,整型變量;第二個(gè)成員為整型變量;第二個(gè)成員為name,字符指字符指針;第三個(gè)成員為針;第三個(gè)成員為sex,字符數(shù)組;第四個(gè)成員為字符數(shù)組;第四個(gè)成員為score,實(shí)型

10、變量。實(shí)型變量。 注意在括號(hào)后的分號(hào)是不可缺注意在括號(hào)后的分號(hào)是不可缺少的。結(jié)構(gòu)定義后,即可進(jìn)行變量說(shuō)明。少的。結(jié)構(gòu)定義后,即可進(jìn)行變量說(shuō)明。 凡說(shuō)明凡說(shuō)明為結(jié)構(gòu)為結(jié)構(gòu)studenttype的變量都由上述的變量都由上述4個(gè)成員組成。個(gè)成員組成。結(jié)構(gòu)是一種構(gòu)造的數(shù)據(jù)類型,是數(shù)目固定,類型結(jié)構(gòu)是一種構(gòu)造的數(shù)據(jù)類型,是數(shù)目固定,類型不同的若干有序變量的集合。不同的若干有序變量的集合。numnamesexscore 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-1

11、0主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 10 二、結(jié)構(gòu)類型變量的定義二、結(jié)構(gòu)類型變量的定義 以上面定義的以上面定義的sttudenttype為例來(lái)加以為例來(lái)加以說(shuō)明說(shuō)明 1先定義結(jié)構(gòu)類型,再說(shuō)明結(jié)構(gòu)變量。先定義結(jié)構(gòu)類型,再說(shuō)明結(jié)構(gòu)變量。 這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名 成員表列成員表列 ;結(jié)構(gòu)類型名結(jié)構(gòu)類型名 結(jié)構(gòu)變量列表結(jié)構(gòu)變量列表; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版)

12、清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 11 上面結(jié)構(gòu)變量列表中不同結(jié)構(gòu)變量之間用上面結(jié)構(gòu)變量列表中不同結(jié)構(gòu)變量之間用逗號(hào)逗號(hào),隔開,例如:隔開,例如: struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */float score;/* 成績(jī)成績(jī) */; struct studenttype boy, girl;/* 定義結(jié)構(gòu)變量定義結(jié)構(gòu)變量 */ 上面定義了兩個(gè)變量上面定義了兩個(gè)變量bo

13、y和和girl為為studenttype結(jié)構(gòu)類型。結(jié)構(gòu)類型。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 12 2在定義結(jié)構(gòu)類型的同時(shí)說(shuō)明結(jié)構(gòu)變量。在定義結(jié)構(gòu)類型的同時(shí)說(shuō)明結(jié)構(gòu)變量。 這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:struct 結(jié)構(gòu)類型名結(jié)構(gòu)類型名 成員表列成員表列 結(jié)構(gòu)變量列表結(jié)構(gòu)變量列表; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李

14、旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 13 例如:例如: struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */float score;/* 成績(jī)成績(jī) */ boy, girl;/* 定義結(jié)構(gòu)類型變量定義結(jié)構(gòu)類型變量 */ 上面的定義與第一種方法相同,也定義了上面的定義與第一種方法相

15、同,也定義了兩個(gè)變量?jī)蓚€(gè)變量boy和和girl為為studenttype結(jié)構(gòu)類型。結(jié)構(gòu)類型。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 14 3直接說(shuō)明結(jié)構(gòu)變量直接說(shuō)明結(jié)構(gòu)變量 這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:這種定義一個(gè)結(jié)構(gòu)變量的一般形式如下:struct 成員表列成員表列 結(jié)構(gòu)變量列表結(jié)構(gòu)變量列表; 例如:例如: structint num;/* 學(xué)號(hào)學(xué)號(hào) */char

16、 *name;/* 姓名姓名 */char sex3;/* 性別性別 */float score;/* 成績(jī)成績(jī) */ boy, girl;/* 定義結(jié)構(gòu)類型變量定義結(jié)構(gòu)類型變量 */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 15 結(jié)構(gòu)類型的結(jié)構(gòu)類型的成員也可以又是一個(gè)結(jié)構(gòu)成員也可以又是一個(gè)結(jié)構(gòu), 即構(gòu)成了嵌套的結(jié)構(gòu)類型。例如,按即構(gòu)成了嵌套的結(jié)構(gòu)類型。例如,按下圖可給出以下

17、結(jié)構(gòu)定義:下圖可給出以下結(jié)構(gòu)定義: numnamesexbirthdayyearmonthdayscore 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 16struct datetype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int year;/* 年年 */int month;/* 月月 */int day;/* 日日 */;定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)

18、學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */struct datetype birthday/* 生日生日 */float score;/* 成績(jī)成績(jī) */ boy, girl;/* 定義結(jié)構(gòu)類型變量定義結(jié)構(gòu)類型變量 */numnamesexbirthdayyearmonthdayscore 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良

19、銀 17 在在ansi c中除了允許具有相同類型的中除了允許具有相同類型的結(jié)構(gòu)變量相互賦值以外結(jié)構(gòu)變量相互賦值以外, 一般對(duì)結(jié)構(gòu)一般對(duì)結(jié)構(gòu)變量的使用,包括賦值、輸入、輸出、變量的使用,包括賦值、輸入、輸出、 運(yùn)算等都是通過(guò)結(jié)構(gòu)變量的運(yùn)算等都是通過(guò)結(jié)構(gòu)變量的成員成員來(lái)實(shí)來(lái)實(shí)現(xiàn)的?,F(xiàn)的。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 188.1.3結(jié)構(gòu)類型變量的引用結(jié)構(gòu)類型變量的引用

20、表示結(jié)構(gòu)變量成員的一般形式是:表示結(jié)構(gòu)變量成員的一般形式是: 結(jié)構(gòu)變量名結(jié)構(gòu)變量名.成員名成員名 結(jié)構(gòu)變量的賦值就是給各成員賦值。結(jié)構(gòu)變量的賦值就是給各成員賦值。 可用輸入語(yǔ)句或賦值語(yǔ)句來(lái)完成,下可用輸入語(yǔ)句或賦值語(yǔ)句來(lái)完成,下面通過(guò)示例進(jìn)行說(shuō)明。面通過(guò)示例進(jìn)行說(shuō)明。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 19 例例8.1 試編寫試編寫為結(jié)構(gòu)變量賦值為結(jié)構(gòu)變量賦值并輸出其值

21、的并輸出其值的程序。程序。 s8_1.c/* 為結(jié)構(gòu)變量為結(jié)構(gòu)變量student賦值賦值 */student.num= 10101; /* 為為num賦值賦值 */= 德華劉德華劉; /* 為為name賦值賦值 */strcpy(student.sex, 男男);/* 為為sex復(fù)制賦值復(fù)制賦值 */student.birthday.year= 1962;/* 為為year賦值賦值 */student.birthday.month= 8;/* 為為month賦值賦值 */student.birthday.day = 18; /* 為為day賦值賦值 */student.

22、score= 98.1;/* 為為score賦值賦值 */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 20/* 輸出結(jié)構(gòu)變量輸出結(jié)構(gòu)變量student */printf(學(xué)號(hào)學(xué)號(hào):%dn, student.num); /* 輸出輸出num */printf(姓名姓名:%sn, );/* 輸出輸出name */printf(性別性別:%sn, studen

23、t.sex);/* 輸出輸出sex */printf(生日生日:%d年年,%d月月,%d日日n,/* 輸出輸出birthday */student.birthday.year, student.birthday.month, student.birthday.day);printf(成績(jī)成績(jī):%4.1fn, student.score);/* 輸出輸出score */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:

24、四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 21 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 228.1.4結(jié)構(gòu)變量的初始化結(jié)構(gòu)變量的初始化 結(jié)構(gòu)體變量也與其他為變量一樣,可以在結(jié)構(gòu)體變量也與其他為變量一樣,可以在定義的定義的同時(shí)進(jìn)行初始化同時(shí)進(jìn)行初始化,下面通過(guò)示例加以說(shuō)明。,下面通過(guò)示例加以說(shuō)明。 例例 8.2 對(duì)結(jié)構(gòu)變量初始化并輸出其值。對(duì)結(jié)構(gòu)變

25、量初始化并輸出其值。s8_2.cstruct studenttype student = /* 定義結(jié)構(gòu)類型變量并同時(shí)進(jìn)行初始化定義結(jié)構(gòu)類型變量并同時(shí)進(jìn)行初始化 */10168,/* 初始化初始化num */學(xué)友張學(xué)友張,/* 初始化初始化name */男男,/* 初始化初始化sex */1963, 6, 18,/* 初始化初始化birthday */99.8/* 初始化初始化score */; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:

26、四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 238.1.4結(jié)構(gòu)變量的初始化結(jié)構(gòu)變量的初始化/* 輸出結(jié)構(gòu)變量輸出結(jié)構(gòu)變量student */printf(學(xué)號(hào)學(xué)號(hào):%dn, student.num);/* 輸出輸出num */printf(姓名姓名:%sn, );/* 輸出輸出name */printf(性別性別:%sn, student.sex);/* 輸出輸出sex */printf(生日生日:%d年年%d月月%d日日n, /* 輸出輸出birthday */student.birthday.year, student.birthday.month

27、, student.birthday.day);printf(成績(jī)成績(jī):%4.1fn, student.score);/* 輸出輸出score */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 248.1.4結(jié)構(gòu)變量的初始化結(jié)構(gòu)變量的初始化 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)

28、言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 258.1.5結(jié)構(gòu)數(shù)組結(jié)構(gòu)數(shù)組 數(shù)組元素也可以是結(jié)構(gòu)類型的。數(shù)組元素也可以是結(jié)構(gòu)類型的。 可以可以構(gòu)成結(jié)構(gòu)型數(shù)組。構(gòu)成結(jié)構(gòu)型數(shù)組。結(jié)構(gòu)數(shù)組的每一個(gè)結(jié)構(gòu)數(shù)組的每一個(gè)元素都是具有相同結(jié)構(gòu)類型的下標(biāo)結(jié)元素都是具有相同結(jié)構(gòu)類型的下標(biāo)結(jié)構(gòu)變量構(gòu)變量。 在實(shí)際應(yīng)用中,經(jīng)常用結(jié)構(gòu)在實(shí)際應(yīng)用中,經(jīng)常用結(jié)構(gòu)數(shù)組來(lái)表示具有相同結(jié)構(gòu)的一個(gè)群體。數(shù)組來(lái)表示具有相同結(jié)構(gòu)的一個(gè)群體。如一個(gè)班的學(xué)生信息,一個(gè)車間職工如一個(gè)班的學(xué)生信息,一個(gè)車間職工信息等。信息等。

29、主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 26 一、結(jié)構(gòu)數(shù)組的定義一、結(jié)構(gòu)數(shù)組的定義 結(jié)構(gòu)數(shù)組的定義方法和結(jié)構(gòu)變量相似,只結(jié)構(gòu)數(shù)組的定義方法和結(jié)構(gòu)變量相似,只需說(shuō)明它為數(shù)組類型即可。例如:需說(shuō)明它為數(shù)組類型即可。例如: #define n 3struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓

30、名姓名 */char sex3;/* 性別性別 */int age;/* 年齡年齡 */float score;/* 成績(jī)成績(jī) */;struct studenttype studentn;/* 定義結(jié)數(shù)組定義結(jié)數(shù)組 */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 27 上面定義了數(shù)組上面定義了數(shù)組student,元素類型為元素類型為stduenttype,數(shù)組共有數(shù)組共有n個(gè)

31、元素,讀者也個(gè)元素,讀者也可象定義結(jié)構(gòu)類型變量一樣進(jìn)行直接定義,可象定義結(jié)構(gòu)類型變量一樣進(jìn)行直接定義,例如例如:#define n 3struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */int age;/* 年齡年齡 */float score;/* 成績(jī)成績(jī) */ studentn;/* 定義結(jié)構(gòu)數(shù)組定義結(jié)構(gòu)數(shù)組 */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c9

32、9版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 28 或或#define n 3structint num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */int age;/* 年齡年齡 */float score;/* 成績(jī)成績(jī) */ studentn;/* 定義結(jié)構(gòu)數(shù)組定義結(jié)構(gòu)數(shù)組 */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章202

33、1-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 29 如下圖所示。如下圖所示。 num name sex age score student0 10101 德華劉 男 42 98.1 student1 10102 靚影張 女 22 99.8 student2 10103 學(xué)友張 男 43 96.5 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀

34、30 二、結(jié)構(gòu)數(shù)組的初始化二、結(jié)構(gòu)數(shù)組的初始化 與其他類型的數(shù)組一樣,對(duì)結(jié)構(gòu)數(shù)組可以作初始化賦與其他類型的數(shù)組一樣,對(duì)結(jié)構(gòu)數(shù)組可以作初始化賦值,下面通過(guò)示例加以說(shuō)明。值,下面通過(guò)示例加以說(shuō)明。 例例 8.3 對(duì)對(duì)結(jié)構(gòu)數(shù)組初始化結(jié)構(gòu)數(shù)組初始化并輸出結(jié)構(gòu)變量。并輸出結(jié)構(gòu)變量。s8_3.cstruct studenttype studentn =/* 定義結(jié)數(shù)組并進(jìn)行初始化定義結(jié)數(shù)組并進(jìn)行初始化 */10101, 德華劉德華劉, 男男, 42, 98.1,10102, 靚影張靚影張, 女女, 22, 99.8,10103, 學(xué)友張學(xué)友張, 男男, 43, 96.5;/* 輸出結(jié)構(gòu)數(shù)組輸出結(jié)構(gòu)數(shù)組st

35、udent */for (i = 0; i n; i+)/* 輸出第輸出第i個(gè)學(xué)生信息個(gè)學(xué)生信息 */printf(%8d, studenti.num);/* 輸出輸出num */printf(%12s, );/* 輸出輸出name */printf(%6s, studenti.sex);/* 輸出輸出sex */printf(%6d, studenti.age); /* 輸出輸出age */printf(%8.1fn, studenti.score);/* 輸出輸出score */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)

36、算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 31 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 32 定義結(jié)構(gòu)數(shù)組時(shí),定義結(jié)構(gòu)數(shù)組時(shí),可不指定元素個(gè)數(shù)可不指定元素個(gè)數(shù),例,例如如struct studenttyp

37、e student = /* 定義結(jié)數(shù)組并進(jìn)行初始化定義結(jié)數(shù)組并進(jìn)行初始化 */10101, 德華劉德華劉, 男男, 42, 98.1,10102, 靚影張靚影張, 女女, 22, 99.8,10103, 學(xué)友張學(xué)友張, 男男, 43, 96.5; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 33 在編譯時(shí),系統(tǒng)將根據(jù)初始結(jié)構(gòu)個(gè)數(shù)自動(dòng)在編譯時(shí),系統(tǒng)將根據(jù)初始結(jié)構(gòu)個(gè)數(shù)自動(dòng)地確定數(shù)組

38、元素個(gè)數(shù),當(dāng)然也可采用如下地確定數(shù)組元素個(gè)數(shù),當(dāng)然也可采用如下的的直接定義結(jié)構(gòu)數(shù)組并初始化直接定義結(jié)構(gòu)數(shù)組并初始化的形式:的形式: struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */int age;/* 年齡年齡 */float score;/* 成績(jī)成績(jī) */ student = /* 定義結(jié)數(shù)組并進(jìn)行初始化定義結(jié)數(shù)組并進(jìn)行初始化 */10101, 德華劉德華劉, 男男, 42, 98.1,10102, 靚影張靚影張, 女女, 22, 99.8,1010

39、3, 學(xué)友張學(xué)友張, 男男, 43, 96.5; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 34 或或structint num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */int age;/* 年齡年齡 */float score;/* 成績(jī)成績(jī) */ student = /* 定義結(jié)數(shù)組并進(jìn)行初始化定義結(jié)數(shù)組并進(jìn)行初

40、始化 */10101, 德華劉德華劉, 男男, 42, 98.1,10102, 靚影張靚影張, 女女, 22, 99.8,10103, 學(xué)友張學(xué)友張, 男男, 43, 96.5; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 35 三、結(jié)構(gòu)數(shù)組實(shí)例三、結(jié)構(gòu)數(shù)組實(shí)例 下面將舉一些簡(jiǎn)單的說(shuō)明性示例說(shuō)明結(jié)構(gòu)數(shù)組的下面將舉一些簡(jiǎn)單的說(shuō)明性示例說(shuō)明結(jié)構(gòu)數(shù)組的使用使用方法方法。 例例8.4計(jì)算

41、學(xué)生的計(jì)算學(xué)生的平均成績(jī)平均成績(jī)以及以及及格及格的人數(shù)。的人數(shù)。s8_4.c/* 計(jì)算平均成績(jī)及及格學(xué)生人數(shù)計(jì)算平均成績(jī)及及格學(xué)生人數(shù) */for (i = 0; i = 60)/* 及格及格, numofpass自加自加1 */countofpass+;av = sum / n; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 36 程序運(yùn)行結(jié)果如下:程序運(yùn)行結(jié)果如下: 主編:主編

42、: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 37 例例8.5 建立同學(xué)建立同學(xué)通訊錄通訊錄。s8_5.cfor (i = 0; i num; i+)/* 輸入通訊信息輸入通訊信息 */printf(n輸入第輸入第%d個(gè)人通訊信息個(gè)人通訊信息:n, i + 1);printf(輸入姓名輸入姓名:);gets();printf(輸入電話號(hào)碼輸入電話號(hào)碼:);gets(m

43、enberi.phone);printf(nn姓名姓名ttt電話號(hào)碼電話號(hào)碼nn);for (i = 0; i 成員名成員名 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 44 例如:例如:(*pstudent).num 或或pstudent-num 注意注意:(*pstudent)兩側(cè)的括號(hào)不可少,這兩側(cè)的括號(hào)不可少,這是由于成員符是由于成員符.的優(yōu)先級(jí)高于的優(yōu)先級(jí)高于*。如去。

44、如去掉括號(hào)寫作掉括號(hào)寫作*pstudent.num則等效于則等效于*( pstudent.num),意義是完全不對(duì)了。下意義是完全不對(duì)了。下面通過(guò)例子來(lái)說(shuō)明結(jié)構(gòu)指針變量的具體說(shuō)面通過(guò)例子來(lái)說(shuō)明結(jié)構(gòu)指針變量的具體說(shuō)明和使用方法。明和使用方法。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 45 例例8.6 結(jié)構(gòu)指示使用示例。結(jié)構(gòu)指示使用示例。 s8_6.c 說(shuō) 明 : 在說(shuō) 明 :

45、在 c 語(yǔ) 言 中 ,語(yǔ) 言 中 , p s t u d e n t - n u m 與與(*pstudent).num等價(jià),但前者更直觀,希望讀者多使等價(jià),但前者更直觀,希望讀者多使用前者的形式。用前者的形式。struct studenttype/* 定義結(jié)構(gòu)類型定義結(jié)構(gòu)類型 */int num;/* 學(xué)號(hào)學(xué)號(hào) */char *name;/* 姓名姓名 */char sex3;/* 性別性別 */struct datetype birthday;/* 生日生日 */float score;/* 成績(jī)成績(jī) */;struct studenttype student; /* 定義結(jié)構(gòu)類型變量定義

46、結(jié)構(gòu)類型變量student */struct studenttype *pstudent;/* 結(jié)構(gòu)指針變量結(jié)構(gòu)指針變量pstudent */ 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 46pstudent = &student;/* 將將student地址賦值給地址賦值給pstudent */* 為結(jié)構(gòu)為結(jié)構(gòu)(*pstudent)賦值賦值 */(*pstudent).

47、num= 10101;/* 為為num賦值賦值 */(*pstudent).name= 德華劉德華劉; /* 為為name賦值賦值 */strcpy(*pstudent).sex, 男男);/* 為為sex復(fù)制賦值復(fù)制賦值 */(*pstudent).birthday.year= 1962;/* 為為year賦值賦值 */(*pstudent).birthday.month= 8;/* 為為month賦值賦值 */(*pstudent).birthday.day= 18;/* 為為day賦值賦值 */(*pstudent).score= 98.1;/* 為為score賦值賦值 */ 主編:主編

48、: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 47/* 輸出學(xué)生信息輸出學(xué)生信息 */printf(學(xué)號(hào)學(xué)號(hào):%dn, pstudent-num); /* 輸出輸出num */printf(姓名姓名:%sn, pstudent-name);/* 輸出輸出name */printf(性別性別:%sn, pstudent-sex);/* 輸出輸出sex */printf(生日生日:%d年年,%d

49、月月,%d日日n, /* 輸出輸出birthday */pstudent-birthday.year, pstudent-birthday.month, pstudent-birthday.day);printf(成績(jī)成績(jī):%4.1fn, pstudent-score);/* 輸出輸出score */ 說(shuō)明:在說(shuō)明:在c語(yǔ)言中,語(yǔ)言中,pstudent-num與與(*pstudent).num等價(jià),但前者更直觀,等價(jià),但前者更直觀,希望讀者多使用前者的形式。希望讀者多使用前者的形式。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)

50、計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 48 二、指向結(jié)構(gòu)數(shù)組變量的指針二、指向結(jié)構(gòu)數(shù)組變量的指針 前面已介紹過(guò)可使用指向數(shù)組元素的指針,同前面已介紹過(guò)可使用指向數(shù)組元素的指針,同樣地對(duì)于結(jié)構(gòu)數(shù)組,也樣地對(duì)于結(jié)構(gòu)數(shù)組,也可用指針來(lái)指向結(jié)構(gòu)數(shù)可用指針來(lái)指向結(jié)構(gòu)數(shù)組元素組元素,設(shè),設(shè)pstudent為指向結(jié)構(gòu)數(shù)組元素的指為指向結(jié)構(gòu)數(shù)組元素的指針變量,則針變量,則pstudent也指向該結(jié)構(gòu)數(shù)組的也指向該結(jié)構(gòu)數(shù)組的1個(gè)元個(gè)元素,素,pstudent + 1指向指向2號(hào)元素,號(hào)元素,pstu

51、dent + i則則指向指向i+1號(hào)元素。號(hào)元素。 這與普通數(shù)組的情況是一致這與普通數(shù)組的情況是一致的。的。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 49 例例8.7 用指針變量輸出結(jié)構(gòu)數(shù)組。用指針變量輸出結(jié)構(gòu)數(shù)組。 s8_7.c/* 輸出結(jié)構(gòu)數(shù)組輸出結(jié)構(gòu)數(shù)組student */for (pstudent = student; pstudent num);/* 輸出輸出num

52、 */printf(%12s, pstudent-name); /* 輸出輸出name */printf(%6s, pstudent-sex);/* 輸出輸出sex */printf(%6d, pstudent-age); /* 輸出輸出age */printf(%8.1fn, pstudent-score);/* 輸出輸出score */ 程序運(yùn)行結(jié)果如下所示:程序運(yùn)行結(jié)果如下所示: 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)

53、算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 508.2 聯(lián)合聯(lián)合 8.2.1聯(lián)合的概念聯(lián)合的概念 與結(jié)構(gòu)類型一樣,與結(jié)構(gòu)類型一樣,聯(lián)合類型聯(lián)合類型也是一種構(gòu)造也是一種構(gòu)造類型。類型。 在一個(gè)聯(lián)合類型內(nèi)可以定義多種不在一個(gè)聯(lián)合類型內(nèi)可以定義多種不同的數(shù)據(jù)類型,在一個(gè)被說(shuō)明為該聯(lián)合類同的數(shù)據(jù)類型,在一個(gè)被說(shuō)明為該聯(lián)合類型的變量中,型的變量中,各個(gè)成員共享同一個(gè)存儲(chǔ)空各個(gè)成員共享同一個(gè)存儲(chǔ)空間間。 聯(lián)合類型與結(jié)構(gòu)類型有一些相似之處。但聯(lián)合類型與結(jié)構(gòu)類型有一些相似之處。但兩者有本質(zhì)上的不同。在結(jié)構(gòu)類型中各成兩者有本質(zhì)上的不同。在結(jié)構(gòu)類型中各成員有各自的內(nèi)存空間,員有各自的內(nèi)存空間, 一個(gè)結(jié)構(gòu)變

54、量的總一個(gè)結(jié)構(gòu)變量的總長(zhǎng)度是各成員長(zhǎng)度之和。而在聯(lián)合類型中,長(zhǎng)度是各成員長(zhǎng)度之和。而在聯(lián)合類型中,各成員共享一段內(nèi)存空間,各成員共享一段內(nèi)存空間, 一個(gè)聯(lián)合變量一個(gè)聯(lián)合變量的長(zhǎng)度等于各成員中最長(zhǎng)的長(zhǎng)度。的長(zhǎng)度等于各成員中最長(zhǎng)的長(zhǎng)度。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 518.2.2 聯(lián)合的定義聯(lián)合的定義 定義一個(gè)聯(lián)合類型的一般形式為:定義一個(gè)聯(lián)合類型的一般形式為: un

55、ion 聯(lián)合類型名聯(lián)合類型名 成員表成員表 ; 成員表中含有若干成員,成員的一般成員表中含有若干成員,成員的一般形式為:形式為:類型說(shuō)明符類型說(shuō)明符 成員名成員名; 成員名的命名應(yīng)符合標(biāo)識(shí)符的規(guī)定。成員名的命名應(yīng)符合標(biāo)識(shí)符的規(guī)定。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 52 例如:例如: union classorofficetypeint clas;/* 班級(jí)班級(jí) */c

56、har office10;/* 教研室教研室 */; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 538.2.3聯(lián)合變量的說(shuō)明聯(lián)合變量的說(shuō)明 (1) 選定義聯(lián)合類型,再說(shuō)明聯(lián)合選定義聯(lián)合類型,再說(shuō)明聯(lián)合變量變量union classorofficetypeint clas;/* 班級(jí)班級(jí) */char office10;/* 教研室教研室 */; union classoroff

57、icetype classoroffice; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 54 (2)定義聯(lián)合類型的同時(shí)說(shuō)明聯(lián)合變量)定義聯(lián)合類型的同時(shí)說(shuō)明聯(lián)合變量union classorofficetypeint clas;/* 班級(jí)班級(jí) */char office10;/* 教研室教研室 */ classoroffice; (3)和直接說(shuō)明聯(lián)合變量。和直接說(shuō)明聯(lián)合變量。un

58、ionint clas;/* 班級(jí)班級(jí) */char office10;/* 教研室教研室 */ classoroffice; 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 55 經(jīng)說(shuō)明后的經(jīng)說(shuō)明后的classandoffice變量為變量為classandofficetype類型。類型。 它們的它們的內(nèi)存分配示內(nèi)存分配示意圖如下圖所示意圖如下圖所示。clasofficeclassa

59、ndoffice 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出版社第八章2021-11-10主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院主講教師:四川大學(xué)計(jì)算機(jī)學(xué)院 陳良銀陳良銀 568.2.4聯(lián)合變量的賦值和使用聯(lián)合變量的賦值和使用 對(duì)聯(lián)合變量的賦值,只能對(duì)變量的成員進(jìn)對(duì)聯(lián)合變量的賦值,只能對(duì)變量的成員進(jìn)行賦值。行賦值。 聯(lián)合變量的成員表示為:聯(lián)合變量的成員表示為: 聯(lián)合變量名聯(lián)合變量名.成員名成員名 例如,例如,classoroffice被說(shuō)明為被說(shuō)明為classorofficetype類型

60、的變量之后,可對(duì)類型的變量之后,可對(duì)classoroffice.clas或或classoroffice.office進(jìn)進(jìn)行賦值。行賦值。 不允許對(duì)聯(lián)合變量作初始化賦值,賦值只不允許對(duì)聯(lián)合變量作初始化賦值,賦值只能在程序中進(jìn)行。還要再?gòu)?qiáng)調(diào)說(shuō)明的是,能在程序中進(jìn)行。還要再?gòu)?qiáng)調(diào)說(shuō)明的是,一個(gè)聯(lián)合變量,一個(gè)聯(lián)合變量, 每次只能賦予一個(gè)成員值。每次只能賦予一個(gè)成員值。換句話說(shuō),一個(gè)聯(lián)合變量的值就是聯(lián)合變換句話說(shuō),一個(gè)聯(lián)合變量的值就是聯(lián)合變員的某一個(gè)成員值。員的某一個(gè)成員值。 主編:主編: 陳良銀陳良銀 游洪躍游洪躍 李旭偉李旭偉 四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院 c c語(yǔ)言程序設(shè)計(jì)(語(yǔ)言程序設(shè)計(jì)(c99c99版)版) 清華大學(xué)出

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論