21天學通51單片機第8章_第1頁
21天學通51單片機第8章_第2頁
21天學通51單片機第8章_第3頁
21天學通51單片機第8章_第4頁
21天學通51單片機第8章_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、聯(lián)系方式:http:/北京源智天下科技有限公司21天學天學51單片機開發(fā)單片機開發(fā)第八講:第八講:C51的結構的結構 1-2北京源智天下科技有限公司聯(lián)系方式:http:/課程安排課程安排結構的聲明結構的聲明 結構變量的初始化結構變量的初始化 結構變量的使用結構變量的使用 結構數(shù)組結構數(shù)組 結構指針結構指針 嵌套結構嵌套結構 位結構位結構 1-3北京源智天下科技有限公司聯(lián)系方式:http:/結構的聲明結構的聲明 形象地說,結構就是用戶定義的,不同數(shù)據(jù)類型的形象地說,結構就是用戶定義的,不同數(shù)據(jù)類型的一個集合體。一個集合體。結構在日常生活中有著廣泛的用途。結構在日常生活中有著廣泛的用途。在使用結構

2、時,需要首先定義結構類型,并聲明該在使用結構時,需要首先定義結構類型,并聲明該結構類型的結構變量結構類型的結構變量 。 1-4北京源智天下科技有限公司聯(lián)系方式:http:/定義結構定義結構 結構其實就是一種用戶自定義的復合數(shù)據(jù)類型。結構其實就是一種用戶自定義的復合數(shù)據(jù)類型。在在C51語言中,結構的一般定義形式如下:語言中,結構的一般定義形式如下: struct 結構名類型說明符 成員名;類型說明符 成員名; 1-5北京源智天下科技有限公司聯(lián)系方式:http:/使用結構的注意事項使用結構的注意事項 在在C51語言中使用結構,應該注意如下幾點:語言中使用結構,應該注意如下幾點: 結構定義的最后一定

3、要加上分號結構定義的最后一定要加上分號“;”。 結構是一種復合構造類型,是由數(shù)目固定、類型不同的結構是一種復合構造類型,是由數(shù)目固定、類型不同的若干有序成員集合而成的數(shù)據(jù)類。若干有序成員集合而成的數(shù)據(jù)類。 結構中的每一個成員可以是一個基本數(shù)據(jù)類型,甚至可結構中的每一個成員可以是一個基本數(shù)據(jù)類型,甚至可以是一個構造類型。以是一個構造類型。 結構在說明和使用之前必須先定義。結構在說明和使用之前必須先定義。 結構是以變量名來訪問結構成員的。結構是以變量名來訪問結構成員的。 1-6北京源智天下科技有限公司聯(lián)系方式:http:/聲明結構變量聲明結構變量 結構只是一類復合數(shù)據(jù)類型的統(tǒng)稱,在程序中使用結構只

4、是一類復合數(shù)據(jù)類型的統(tǒng)稱,在程序中使用時是以結構變量的形式來使用的。時是以結構變量的形式來使用的。 在程序中應該先定義結構,然后使用該結構來聲明在程序中應該先定義結構,然后使用該結構來聲明一個結構變量。一個結構變量。C51語言中提供了靈活的結構變量的聲明方法:語言中提供了靈活的結構變量的聲明方法: 先定義結構,再聲明結構變量先定義結構,再聲明結構變量 定義結構時聲明結構變量定義結構時聲明結構變量 直接聲明結構變量直接聲明結構變量 1-7北京源智天下科技有限公司聯(lián)系方式:http:/先定義結構,再聲明結構變量先定義結構,再聲明結構變量 這種方法完全符合結構和結構變量的邏輯順序這種方法完全符合結構

5、和結構變量的邏輯順序 。可以同時聲明多個結構變量可以同時聲明多個結構變量 。struct studentchar name20;int num;int age;char sex2;float score;struct student zhang,wang;1-8北京源智天下科技有限公司聯(lián)系方式:http:/定義結構時聲明結構變量定義結構時聲明結構變量 在在C51語言中,允許在定義結構的時候同時聲明結語言中,允許在定義結構的時候同時聲明結構變量。構變量。在定義結構的同時可以聲明多個結構變量。在定義結構的同時可以聲明多個結構變量。struct 結構名類型說明符 成員名;類型說明符 成員名;結構變量

6、; 1-9北京源智天下科技有限公司聯(lián)系方式:http:/直接聲明結構變量直接聲明結構變量 在在C51語言中,可以直接說明結構變量,而不顯式語言中,可以直接說明結構變量,而不顯式地說明結構名稱。地說明結構名稱。structchar name20;int num;int age;char sex2;float score;Alice,Bob; 注意:直接聲明結構變量的方法不能再額外聲明其注意:直接聲明結構變量的方法不能再額外聲明其他的結構變量。他的結構變量。 1-10北京源智天下科技有限公司聯(lián)系方式:http:/結構變量的初始化結構變量的初始化 在在C51語言中,結構變量的初始化可以采用兩種方語言

7、中,結構變量的初始化可以采用兩種方法。法。 一種是聲明初始化,既在聲明的同時進行初始化。一種是聲明初始化,既在聲明的同時進行初始化。 另一種是動態(tài)初始化,既在程序中指定初始化值。另一種是動態(tài)初始化,既在程序中指定初始化值。 聲明初始化的一般形式如下:聲明初始化的一般形式如下: struct 結構名類型說明符 變量名;類型說明符 變量名;結構變量=值,值,;1-11北京源智天下科技有限公司聯(lián)系方式:http:/結構變量的使用結構變量的使用 在在C51語言中,表示結構變量成員的一般形式如下:語言中,表示結構變量成員的一般形式如下: 結構變量名結構變量名.成員名成員名 在在C51語言中允許對結構變量

8、中的成員進行賦值、語言中允許對結構變量中的成員進行賦值、修改等操作。修改等操作。也允許具有相同類型的結構變量之間相互賦值。也允許具有相同類型的結構變量之間相互賦值。 在在C51語言中,允許多重結構或者多重結構變量。語言中,允許多重結構或者多重結構變量。多重結構需逐級找到最低級的成員才能引用。多重結構需逐級找到最低級的成員才能引用。 1-12北京源智天下科技有限公司聯(lián)系方式:http:/結構數(shù)組結構數(shù)組 結構數(shù)組常來表示具有相同數(shù)據(jù)結構的一個群體,結構數(shù)組常來表示具有相同數(shù)據(jù)結構的一個群體,是指數(shù)組中的每一個元素都是具有相同結構類型的是指數(shù)組中的每一個元素都是具有相同結構類型的結構變量。結構變量

9、。在在C51語言中,結構數(shù)組的聲明可以通過三種方法語言中,結構數(shù)組的聲明可以通過三種方法來實現(xiàn)來實現(xiàn) : 先定義結構再聲明結構數(shù)組先定義結構再聲明結構數(shù)組 定義結構時聲明結構數(shù)組定義結構時聲明結構數(shù)組 直接聲明結構數(shù)組直接聲明結構數(shù)組 1-13北京源智天下科技有限公司聯(lián)系方式:http:/先定義結構再聲明結構數(shù)組先定義結構再聲明結構數(shù)組 先定義結構再聲明結構數(shù)組的示例如下:先定義結構再聲明結構數(shù)組的示例如下: struct student/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float score;/分數(shù);struct st

10、udent boy50;/聲明結構數(shù)組1-14北京源智天下科技有限公司聯(lián)系方式:http:/定義結構時聲明結構數(shù)組定義結構時聲明結構數(shù)組 定義結構時聲明結構數(shù)組的示例如下:定義結構時聲明結構數(shù)組的示例如下: struct student/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float score;/分數(shù)boy50;/聲明結構數(shù)組1-15北京源智天下科技有限公司聯(lián)系方式:http:/直接聲明結構數(shù)組直接聲明結構數(shù)組直接聲明結構數(shù)組的示例如下:直接聲明結構數(shù)組的示例如下: struct/定義結構char *name;/姓名int

11、 num;/學號int age;/年齡char *sex;/性別float score;/分數(shù)boy50;/聲明結構數(shù)組1-16北京源智天下科技有限公司聯(lián)系方式:http:/初始化結構數(shù)組初始化結構數(shù)組 初始化結構數(shù)組也可以采用聲明初始化和動態(tài)初始化結構數(shù)組也可以采用聲明初始化和動態(tài)初始化兩種方法。初始化兩種方法。典型的聲明初始化結構數(shù)組示例如下:典型的聲明初始化結構數(shù)組示例如下: struct student/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float score;/分數(shù)boy5=/聲明并初始化結構數(shù)組Alice,10

12、0,24,F,90.5,Bob,101,24, M ,90.0,Jack,102,25, M ,88.5,Twis,103,23, M ,78.5,Bohm,104,21, M ,82.5;1-17北京源智天下科技有限公司聯(lián)系方式:http:/結構指針結構指針 C51種可以用結構來聲明指針,也就是結構指針。種可以用結構來聲明指針,也就是結構指針。結構指針是指該指針變量用來指向一個結構變量。結構指針是指該指針變量用來指向一個結構變量。在在C51中,通過結構指針可以訪問該結構變量。中,通過結構指針可以訪問該結構變量。 在在C51語言中,結構指針的聲明方法可以通過三種語言中,結構指針的聲明方法可以通

13、過三種方法來實現(xiàn)方法來實現(xiàn) : 先定義結構再聲明結構指針先定義結構再聲明結構指針 定義結構時聲明結構指針定義結構時聲明結構指針 直接聲明結構指針直接聲明結構指針 1-18北京源智天下科技有限公司聯(lián)系方式:http:/先定義結構再聲明結構指針先定義結構再聲明結構指針先定義結構再聲明結構指針的示例如下:先定義結構再聲明結構指針的示例如下: struct student/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float score;/分數(shù);struct student *pstu;/聲明結構指針1-19北京源智天下科技有限公司聯(lián)系方

14、式:http:/定義結構時聲明結構數(shù)組定義結構時聲明結構數(shù)組定義結構時聲明結構數(shù)組的示例如下:定義結構時聲明結構數(shù)組的示例如下: struct student/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float score;/分數(shù)*pstu;/聲明結構指針1-20北京源智天下科技有限公司聯(lián)系方式:http:/直接聲明結構數(shù)組直接聲明結構數(shù)組直接聲明結構數(shù)組的示例如下:直接聲明結構數(shù)組的示例如下: struct/定義結構char *name;/姓名int num;/學號int age;/年齡char *sex;/性別float s

15、core;/分數(shù)*pstu;/聲明結構指針1-21北京源智天下科技有限公司聯(lián)系方式:http:/使用結構指針使用結構指針 結構指針變量必須要先賦值后才能在程序中使用。結構指針變量必須要先賦值后才能在程序中使用。結構指針變量的賦值操作是把結構變量的首地址賦結構指針變量的賦值操作是把結構變量的首地址賦予該結構指針變量。予該結構指針變量。訪問結構變量的各個成員的一般形式如下:訪問結構變量的各個成員的一般形式如下: (*結構指針變量結構指針變量). 成員名成員名 結構指針變量結構指針變量-成員名成員名 1-22北京源智天下科技有限公司聯(lián)系方式:http:/一些注意事項一些注意事項在在C51語言中,如下

16、的三種用于結構成員的表示形語言中,如下的三種用于結構成員的表示形式是完全等效的式是完全等效的 : 結構變量結構變量.成員名成員名 (*結構指針變量結構指針變量).成員名成員名 結構指針變量結構指針變量-成員名成員名 初學者容易混淆的兩個概念是結構名和結構變量初學者容易混淆的兩個概念是結構名和結構變量 。 結構名只能表示一個結構形式,編譯系統(tǒng)并不對它分配結構名只能表示一個結構形式,編譯系統(tǒng)并不對它分配內(nèi)存空間。內(nèi)存空間。 結構變量是被聲明為某種類型的結構的變量,編譯程序結構變量是被聲明為某種類型的結構的變量,編譯程序可以對該變量分配存儲空間??梢詫υ撟兞糠峙浯鎯臻g。 1-23北京源智天下科技有

17、限公司聯(lián)系方式:http:/指向結構數(shù)組的結構指針指向結構數(shù)組的結構指針 將結構指針變量指向一個結構數(shù)組,可以通過結構指針變量將結構指針變量指向一個結構數(shù)組,可以通過結構指針變量來對該結構數(shù)組進行操作。來對該結構數(shù)組進行操作。此時,結構指針變量的值是整個結構數(shù)組的首地址。此時,結構指針變量的值是整個結構數(shù)組的首地址。另外,結構指針變量也可指向結構數(shù)組的一個元素,這時結另外,結構指針變量也可指向結構數(shù)組的一個元素,這時結構指針變量的值是該結構數(shù)組元素的首地址。構指針變量的值是該結構數(shù)組元素的首地址。 1-24北京源智天下科技有限公司聯(lián)系方式:http:/嵌套結構嵌套結構 嵌套結構其實就是多重結構

18、,是指在一個結構成員嵌套結構其實就是多重結構,是指在一個結構成員中可以包括其他一個結構。中可以包括其他一個結構。嵌套結構的成員名的引用,是從最外層直到最內(nèi)層嵌套結構的成員名的引用,是從最外層直到最內(nèi)層逐個被列出的。逐個被列出的。典型的嵌套式結構成員表示方式如下:典型的嵌套式結構成員表示方式如下: 結構變量名結構變量名.嵌套結構變量名嵌套結構變量名.結構成員名結構成員名 1-25北京源智天下科技有限公司聯(lián)系方式:http:/位結構位結構 位結構是位結構是C51語言中的特殊結構形式,其提供了位訪問能力。語言中的特殊結構形式,其提供了位訪問能力。通過位結構,可以訪問一個字節(jié)或字的多個位。通過位結構,可以訪問一個字節(jié)或字的多個位。這樣可以有效的介紹代碼體積,提高程序的效率。這樣可以有效的介紹代碼體積,提高程序的效率。位結構定義的一般形式如下:位結構定義的一般形式如下: struct位結構名數(shù)據(jù)類型 變量名: 整型常數(shù);數(shù)據(jù)類型 變量名: 整型常數(shù);位結構變量;1-26北京源智天下科技有限公司聯(lián)系方式:http:/位結構位結構在使用位結構時,應注意以下幾點。在使用位結構時,應注意以下幾點。 位結構中的成員必須是位結構中的成員必須是int,但可以定義為,但可以定義為unsigned或或者者signed。 當位結構成員長度為當位結構成員長度為1時,時,C5

溫馨提示

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

評論

0/150

提交評論