第7講結(jié)構(gòu)體與共用體PPT課件_第1頁
第7講結(jié)構(gòu)體與共用體PPT課件_第2頁
第7講結(jié)構(gòu)體與共用體PPT課件_第3頁
第7講結(jié)構(gòu)體與共用體PPT課件_第4頁
第7講結(jié)構(gòu)體與共用體PPT課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第7講講 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體17.1 結(jié)構(gòu)體7.2 共用體學習目標學習目標l理解結(jié)構(gòu)體的概念。l掌握結(jié)構(gòu)體、共用體類型的定義。l掌握結(jié)構(gòu)體變量 、結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針的使用。l理解共用體變量、共用體指針的使用。l理解鏈表的創(chuàng)建和輸出。2第第7講講 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體37.1.1 結(jié)構(gòu)體的定義和初始化7.1.2 結(jié)構(gòu)體的使用7.1.3 結(jié)構(gòu)體數(shù)組7.1.4 結(jié)構(gòu)體與指針數(shù)字字符+數(shù)字字符串多種不同類型數(shù)據(jù)的混合結(jié)構(gòu)結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu)體數(shù)據(jù)4乘客信息系統(tǒng),混合結(jié)構(gòu)大數(shù)據(jù)管理結(jié)構(gòu)體的概念結(jié)構(gòu)體的概念l結(jié)構(gòu)體結(jié)構(gòu)體將不同類型的數(shù)據(jù)有序組合在一起是用戶的自定義數(shù)據(jù)類型需要先定義再使用

2、5結(jié)構(gòu)體的定義結(jié)構(gòu)體的定義自定義的結(jié)自定義的結(jié)構(gòu)體類型名構(gòu)體類型名結(jié)構(gòu)體類型中結(jié)構(gòu)體類型中成員的名字成員的名字struct是結(jié)構(gòu)是結(jié)構(gòu)體類型的標識體類型的標識分號不能缺!分號不能缺! struct 結(jié)構(gòu)體名 類型標識符1 成員名1; 類型標識符n 成員名n; ;結(jié)構(gòu)體的定義格式:結(jié)構(gòu)體的定義格式:6登機乘客信息管理登機乘客信息管理NoNameAgeSexWeightLuggageMeal1David21M89.9495.2A2Kate14F54.2376.3B3John70M74.2469.6B4Mary46F62.7412.7A編號姓名年齡性別體重行李重量所選套餐登機乘客信息7例例1:1:定

3、義結(jié)構(gòu)體定義結(jié)構(gòu)體struct passenger int no; char name20; int age; char sex; float weight; float luggage; char meal;編號姓名年齡性別體重行李重量所選套餐8結(jié)構(gòu)體變量結(jié)構(gòu)體變量l結(jié)構(gòu)體變量結(jié)構(gòu)體變量為自定義結(jié)構(gòu)體數(shù)據(jù)類型的變量定義結(jié)構(gòu)體類型變量時開辟內(nèi)存空間在內(nèi)存所占的存儲空間等于各成員存儲空間的總和結(jié)構(gòu)體變量定義方式1.先定義結(jié)構(gòu)體類型再定義變量名2.在定義結(jié)構(gòu)體類型的同時定義變量名3.不定義結(jié)構(gòu)體類型名,只定義結(jié)構(gòu)體變量名1. 先定義結(jié)構(gòu)體類型再定義變量名結(jié)構(gòu)體變量的定義結(jié)構(gòu)體變量的定義struct

4、 student student1, student2;結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名變量變量1 1變量變量2 2struct student int num; char name20; char sex; int age; float score; char addr30;先定義結(jié)構(gòu)先定義結(jié)構(gòu)體類型體類型例例1struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表; 結(jié)構(gòu)體名結(jié)構(gòu)體名 變量名列表變量名列表struct date int day; int month; int year; ; struct student char name20; struct date birthday; struct

5、student stu;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法一個結(jié)構(gòu)體中一個結(jié)構(gòu)體中可包含其他結(jié)可包含其他結(jié)構(gòu)體的變量!構(gòu)體的變量!1. 先定義結(jié)構(gòu)體類型再定義變量名例例2 # define STUDENT struct student STUDENT int num; char name20; char sex; char addr30; ; STUDENT student1, student2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法1. 先定義結(jié)構(gòu)體類型再定義變量名例例3利用宏簡化程序!利用宏簡化程序!凡是凡是STUDENT的地方都用的地方都用struct student機械替換機械

6、替換 struct student int num; char name20; char sex; int age; float score; char addr30; student1, student2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法2.在定義結(jié)構(gòu)體類型的同時定義變量名例例1 struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表 變量名列表變量名列表; 在定義結(jié)構(gòu)體類型在定義結(jié)構(gòu)體類型的同時定義變量的同時定義變量struct int num; char name20; char sex; int age; float score; char addr30; student1, stu

7、dent2;結(jié)構(gòu)體變量的定義方法結(jié)構(gòu)體變量的定義方法3.不定義結(jié)構(gòu)體類型名,只定義結(jié)構(gòu)體變量名例例1 struct 成員列表成員列表 變量名列表;變量名列表; 不出現(xiàn)結(jié)構(gòu)體名不出現(xiàn)結(jié)構(gòu)體名結(jié)構(gòu)體變量定義結(jié)構(gòu)體變量定義l結(jié)構(gòu)體變量變量的定義例15void main(void) struct date int year, month, day; today; coutsizeof(struct date)endl; 12定義結(jié)構(gòu)體類型變量時開辟內(nèi)存空間結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化l直接在結(jié)構(gòu)體變量之后通過賦值語句完成初始化void main(void) struct student lon

8、g int num; char name20; char sex; char addr30; student1=901031, “Li Lin”, M, “123 Beijing Road”;student1;cinstudent1.num; student1.num=100;錯誤錯誤必須用成員名引用必須用成員名引用結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用l使用結(jié)構(gòu)體變量成員格式嵌套的結(jié)構(gòu)體變量必須逐層引用。18student1.student1.birthday.birthday.dayday=25;=25;如果結(jié)構(gòu)體變量的成員本身又是一個結(jié)構(gòu)體如果結(jié)構(gòu)體變量的成員

9、本身又是一個結(jié)構(gòu)體類型,則要用若干個成員運算符,由外向內(nèi)類型,則要用若干個成員運算符,由外向內(nèi)逐層找到最內(nèi)層的一級成員,而且只能對最逐層找到最內(nèi)層的一級成員,而且只能對最內(nèi)層的成員進行訪問。內(nèi)層的成員進行訪問。結(jié)構(gòu)體變量的使用結(jié)構(gòu)體變量的使用l使用結(jié)構(gòu)體變量成員格式結(jié)構(gòu)體變量中的成員可以同一般變量一樣進行運算。19結(jié)構(gòu)體變量的成員同普通變量一樣,都可以結(jié)構(gòu)體變量的成員同普通變量一樣,都可以進行同類型普通變量所允許的各種運算。進行同類型普通變量所允許的各種運算。student1.birthday.day+; student1.score+=60;例:例:#include stdafx.h#inc

10、lude using namespace std;struct date int day; int month; int year;struct student int num; char name20; char sex; int age; struct date birthday;20int main(int argc, char* argv) struct student stu; coutstu.num; ; coutstu.sex; coutstu.birthday.year; coutstu.birthday.month; coutstu.birthday.

11、day; coutNo.: stu.numendl; coutName:endl; coutSex:stu.sexendl; return 0;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組:結(jié)構(gòu)體數(shù)組中的每個元素都是一個結(jié)構(gòu)體類型的變量,其中包括該類型的各個成員。數(shù)組各元素在內(nèi)存中連續(xù)存放。struct student 成員列表; ; student std5;21結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組22struct student int num; char name20; char sex; int age; float score; char addr30; ;struct

12、student stu30;struct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定義直接定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組初始化與數(shù)值型數(shù)組的初始化方式類似,只需將數(shù)組的各個元素用花括號分隔開。23struct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組l結(jié)構(gòu)體數(shù)組的使用 結(jié)構(gòu)體數(shù)組的引用與普通數(shù)組類

13、似,同樣通過下標來訪問。數(shù)組元素是結(jié)構(gòu)體類型,所以只能對成員進行訪問。24結(jié)構(gòu)體數(shù)組名下標.成員名例:結(jié)構(gòu)體變量的定義例:結(jié)構(gòu)體變量的定義struct passenger person1, person2, person3, person4;struct passenger person4;變量名變量類型用數(shù)組替代具體變量用數(shù)組替代具體變量25例例3 3:結(jié)構(gòu)體變量的初始化:結(jié)構(gòu)體變量的初始化struct passenger person4= 1, “David”, 21, M, 89.9, 495.2, A, 2, “Kate”, 14, F, 54.2, 376.3, B, 3, “Joh

14、n”, 70, M, 74.2, 469.6, B, 4, “Mary”, 46, F, 62.7, 412.7, A; ;26例:例:27struct person char name9; int age; ;struct person bme10= “Jone”,17, “Paul”,19, “Mary”,18, “Adam”,16 ;A) endl;B) 1endl;C) 1endl;D) 0endl;輸出:輸出:Adam輸出:輸出:d輸出:輸出:a輸出:輸出:M結(jié)構(gòu)體變量的使用結(jié)構(gòu)體

15、變量的使用for(i=0, select_B=0; i4; i+) if(personi.meal=B) select_B+; endl;cout“The total is”select_B結(jié)構(gòu)體成員名 (*結(jié)構(gòu)體指針變量名).結(jié)構(gòu)體成員名例如:student stu; student *p=&stu; cout num (*p).num;31必須加圓括號,因為必須加圓括號,因為“.”運算符優(yōu)先級更高運算符優(yōu)先級更高。例:例: #include using namespace std; struct student long num; char name

16、20; int age; ; /定義結(jié)構(gòu)體定義結(jié)構(gòu)體32void main() student a=20418132,ZhaoGang,23; student *p; /定義結(jié)構(gòu)體指針變量定義結(jié)構(gòu)體指針變量 p=&a; /給結(jié)構(gòu)體指針變量賦值給結(jié)構(gòu)體指針變量賦值 couta.num ; couta.ageendl; cout(*p).num (*p).name ; cout(*p).ageendl; coutnum name ; coutage endl;第第7講講 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體337.1 結(jié)構(gòu)體7.2 共用體7.2 共用體共用體6.2.1 結(jié)構(gòu)體與共用體

17、變量的定義6.2.2 共用體變量的使用6.2.3 共用體與指針347.2.1 共用體與共用體變量定義共用體與共用體變量定義l共用體類型定義格式union 共用體類型名共用體類型名 類型標識符類型標識符1 成員名成員名1; 類型標識符類型標識符n 成員名成員名n;35共用體類型定義的標識符共用體類型定義的標識符7.2.1 共用體與共用體變量定義共用體與共用體變量定義l共用體類型定義格式union data char a; int b; float c; ;367.2.1 共用體與共用體變量定義共用體與共用體變量定義l所謂“共用”是指多種不同數(shù)據(jù)類型的變量從同一地址開始存放,共同占用同一段內(nèi)存單元

18、。l但是在某一時刻有且僅有一個變量占用這一段內(nèi)存單元。l這種由不同類型的數(shù)據(jù)共用同一段內(nèi)存單元的用戶自定義類型成為共用體。377.2.1 共用體與共用體變量定義共用體與共用體變量定義l可以把一個char型變量a,一個short型變量b和一個long型變量c存放在起始地址為2000的同一段內(nèi)存單元中。382000abc7.2 共用體共用體7.2.1 結(jié)構(gòu)體與共用體變量的定義7.2.2 共用體變量的使用7.2.3 共用體與指針39共用體變量的使用共用體變量的使用l共用體變量的使用不能對共用體變量初始化和賦值 40union data char a; int b; float c; u1=A, 25

19、, 3.5; /錯誤的! u1.a /只能直接使用變量中的成員 u1.b u1.c共用體變量的使用共用體變量的使用l共用體變量的使用不能對共用體變量初始化和賦值 41 共用體變量雖然可以存放幾種不同類型的成員,但在同一時刻只能有一個成員起作用,其它成員不起作用。 共用體變量中起作用的成員是最后一次存放的成員。共用體變量的使用共用體變量的使用42union un int i; double y;struct st char a10; union un b;coutsizeof(struct st)endl;1843void main(void) union EXAMPLE struct int x, int y; in; int a,b; e; e.a=1; e.b=2; e.in.x=e.a*e.a; e.in.y=e.b+e.b; coute.in.xte.in.yendl;inxyabb1 2 48輸出:輸出:4 8共用體共用體7.2.1 結(jié)構(gòu)體與共用體變量的定義7.2.2 共用體變量的使用7.2.3 共用體與指針447.2 共用體共用體l共用體與指針共用體指針變量的定義與對共用體的引用形式與結(jié)構(gòu)體類似。45#include using namespace

溫馨提示

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

評論

0/150

提交評論