




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、email: c語言交流群:語言交流群:l掌握結(jié)構(gòu)的定義和聲明掌握結(jié)構(gòu)的定義和聲明l掌握結(jié)構(gòu)成員的訪問掌握結(jié)構(gòu)成員的訪問l結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化l掌握結(jié)構(gòu)數(shù)組的定義和使用掌握結(jié)構(gòu)數(shù)組的定義和使用l掌握結(jié)構(gòu)指針的定義和使用掌握結(jié)構(gòu)指針的定義和使用l掌握結(jié)構(gòu)指針訪問成員的方法掌握結(jié)構(gòu)指針訪問成員的方法l掌握類型定義掌握類型定義typedef的使用的使用l理解枚舉的定義和使用理解枚舉的定義和使用數(shù)組是一組同類型數(shù)據(jù)的集合數(shù)組是一組同類型數(shù)據(jù)的集合 例如例如 int a10存放的是存放的是10個(gè)整數(shù),數(shù)組個(gè)整數(shù),數(shù)組a中只能存放中只能存放整數(shù),不能存放浮點(diǎn)數(shù)、長整形、字符串等整數(shù),不能存
2、放浮點(diǎn)數(shù)、長整形、字符串等 例如例如 學(xué)生基本信息有學(xué)生基本信息有:學(xué)號(hào)、姓名、性別、出生日期、學(xué)號(hào)、姓名、性別、出生日期、籍貫、家庭住址、政治面貌、系部、專業(yè)、班級(jí)、籍貫、家庭住址、政治面貌、系部、專業(yè)、班級(jí)、課程、成績等課程、成績等 這些這些數(shù)據(jù)的類型不同,就不能存放在一個(gè)數(shù)組中,數(shù)據(jù)的類型不同,就不能存放在一個(gè)數(shù)組中,而且相同的數(shù)據(jù)類型也不便于存放在同一數(shù)組中,而且相同的數(shù)據(jù)類型也不便于存放在同一數(shù)組中,比如學(xué)號(hào)、姓名和家庭地址等比如學(xué)號(hào)、姓名和家庭地址等基于以上因素,引入一種新的數(shù)據(jù)結(jié)構(gòu)基于以上因素,引入一種新的數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)結(jié)構(gòu)結(jié)構(gòu)是結(jié)構(gòu)是一個(gè)一個(gè)或或多個(gè)變量多個(gè)變量的集合,這些變量的
3、類型的集合,這些變量的類型可能是可能是不同的數(shù)據(jù)類型不同的數(shù)據(jù)類型結(jié)構(gòu)優(yōu)點(diǎn):便于組織和管理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)定義格式結(jié)構(gòu)定義格式struct 結(jié)構(gòu)名結(jié)構(gòu)名 成員表列成員表列;struct studentchar num10;char name8;char sex;char birth10;char addr50;.;結(jié)構(gòu)名成員struct pointint x;int y;結(jié)構(gòu)名成員結(jié)構(gòu)變量的聲明結(jié)構(gòu)變量的聲明(定義定義)三種方法三種方法 (1)先聲明結(jié)構(gòu)體類型再定義變量名先聲明結(jié)構(gòu)體類型再定義變量名例如:例如:struct point pt1, pt2; 定義了pt1和pt2為struct po
4、int類型的變量,即它們具有struct point類型的結(jié)構(gòu).結(jié)構(gòu)類型結(jié)構(gòu)變量10050300600pt1pt2xy結(jié)構(gòu)變量的聲明結(jié)構(gòu)變量的聲明(定義定義)三種方法三種方法 (2)在定義結(jié)構(gòu)類型的同時(shí)定義變量在定義結(jié)構(gòu)類型的同時(shí)定義變量 structstruct結(jié)構(gòu)名結(jié)構(gòu)名 成員列表成員列表 變量名列表;變量名列表; 例如:struct pointint x;int y; pt1, pt2;結(jié)構(gòu)變量的聲明結(jié)構(gòu)變量的聲明(定義定義)三種方法三種方法 (3)直接定義結(jié)構(gòu)變量直接定義結(jié)構(gòu)變量 structstruct 成員表列成員表列 變量名表列;變量名表列;即不出現(xiàn)結(jié)構(gòu)體名。即不出現(xiàn)結(jié)構(gòu)體名。
5、例如:struct int x;int y; pt1, pt2;結(jié)構(gòu)變量成員的訪問結(jié)構(gòu)變量成員的訪問(引用引用)格式:結(jié)構(gòu)變量名結(jié)構(gòu)變量名.成員名成員名例如 struct point pt1, pt2;pt1.x = 100;pt1.y = 50;pt2.x = 300;pt2.y = 600;結(jié)構(gòu)變量成員可以是結(jié)構(gòu)結(jié)構(gòu)變量成員可以是結(jié)構(gòu)struct studentchar num10;char name8;char sex;char birth10;char addr50;struct course major10;stu1, stu2;成員是結(jié)成員是結(jié)構(gòu)變量構(gòu)變量struct course
6、char couname20;float score;結(jié)構(gòu)變量成員的訪問結(jié)構(gòu)變量成員的訪問(引用引用)規(guī)則規(guī)則 (1)不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和不能將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出輸出例如 struct point pt1, pt2;pt1.x = 100;pt1.y = 50;pt2.x = 300;pt2.y = 600;printf(“pt1=(%d, %d)n”, pt1);printf(“pt2=(%d, %d)n”, pt2);printf(“pt1=(%d, %d)n”, pt1.x, pt1.y);printf(“pt2=(%d, %d)n”, pt2
7、.x, pt2.y);結(jié)構(gòu)變量成員的訪問結(jié)構(gòu)變量成員的訪問(引用引用)規(guī)則規(guī)則 (2)如果如果成員成員本身又屬一個(gè)本身又屬一個(gè)結(jié)構(gòu)類型結(jié)構(gòu)類型,則要用若干個(gè)成員運(yùn)算符則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)一級(jí)一級(jí)地地找到最低的一級(jí)找到最低的一級(jí)的成員。的成員。只能對(duì)最低級(jí)的成員進(jìn)行賦值或存取以及只能對(duì)最低級(jí)的成員進(jìn)行賦值或存取以及運(yùn)算。運(yùn)算。struct studentchar num10;char name8;char sex;char birth10;char addr50;struct course major10;stu1, stu2;struct coursechar couname20;
8、float score; = “張三”;stu1.major.couname = “程序設(shè)計(jì)基礎(chǔ)(c)”;stu1.major.score = 95;結(jié)構(gòu)變量成員的訪問結(jié)構(gòu)變量成員的訪問(引用引用)規(guī)則規(guī)則 (3)結(jié)構(gòu)成員可以和普通變量一樣運(yùn)算結(jié)構(gòu)成員可以和普通變量一樣運(yùn)算例:struct point pt1, pt2;pt1.x = 100;pt1.y = 50;pt2.x = 300;pt2.y = 600;pt1.x += 50;pt1.y -=20;pt1.x+ ?結(jié)構(gòu)變量成員的訪問結(jié)構(gòu)變量成員的訪問(引用引用)規(guī)則規(guī)則 (4) 可以引用可以引用結(jié)構(gòu)變量成員結(jié)構(gòu)變量成
9、員的的地址地址,也可以引用,也可以引用結(jié)結(jié)構(gòu)變量構(gòu)變量的的地址地址。 例 scanf(%d,&pt1.x); /*輸入pt1.x的值*/ printf(%x,pt1); /*輸出pt1的首地址*/?但不能用以下語句整體讀入結(jié)構(gòu)體變量,例如: scanf(%d,d,pt1); 結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),傳遞結(jié)構(gòu)體變量的地址。 結(jié)構(gòu)變量占用的存儲(chǔ)空間結(jié)構(gòu)變量占用的存儲(chǔ)空間結(jié)構(gòu)變量所占用的存儲(chǔ)空間是該結(jié)構(gòu)所有成員占用的存儲(chǔ)空間和結(jié)構(gòu)變量所占用的存儲(chǔ)空間是該結(jié)構(gòu)所有成員占用的存儲(chǔ)空間和struct studentchar num10;char name8;char sex;char b
10、irth10;char addr50;struct course major10;stu1, stu2;struct coursechar couname20;float score;stu1和和stu2占用的空間都是占用的空間都是319個(gè)字節(jié)個(gè)字節(jié)結(jié)構(gòu)變量占用的存儲(chǔ)空間結(jié)構(gòu)變量占用的存儲(chǔ)空間結(jié)構(gòu)變量所占用的存儲(chǔ)空間是該結(jié)構(gòu)所有成員占用的存儲(chǔ)空間和結(jié)構(gòu)變量所占用的存儲(chǔ)空間是該結(jié)構(gòu)所有成員占用的存儲(chǔ)空間和pt1和和pt2占用的空間都是占用的空間都是8個(gè)字節(jié)個(gè)字節(jié)struct pointint x;int y; pt1, pt2;結(jié)構(gòu)變量的初始化方法結(jié)構(gòu)變量的初始化方法 (1)定義結(jié)構(gòu)變量的同時(shí)初
11、始化定義結(jié)構(gòu)變量的同時(shí)初始化例:struct point pt1 = 100, 50, pt2 = 300, 600;struct student stu1 = “1210501304”, “張三”, f, “1994-08-30”, “重慶市”, “數(shù)據(jù)結(jié)構(gòu)”, 80;結(jié)構(gòu)變量的初始化方法結(jié)構(gòu)變量的初始化方法 (2)先定義結(jié)構(gòu)變量,然后初始化先定義結(jié)構(gòu)變量,然后初始化注意:此時(shí)只能對(duì)結(jié)構(gòu)變量的每個(gè)成員進(jìn)行初始化例:struct point pt1, pt2;pt1.x = 100;pt1.y = 50;pt2.x = 300;pt2.y = 600;struct student stu1 ;
12、strcpy(stu1.num, 1210501304);strcpy(, 張三);stu1.sex = f;strcpy(stu1.birth, 1994-08-30);strcpy(stu1.addr, 重慶市);strcpy(stu1.major.couname, 數(shù)據(jù)結(jié)構(gòu));stu1.major.score = 80;例例6-1 求兩點(diǎn)距離求兩點(diǎn)距離例例6-2 求矩形面積求矩形面積結(jié)構(gòu)與普通的數(shù)據(jù)類型一樣,也可以定義結(jié)構(gòu)數(shù)組結(jié)構(gòu)與普通的數(shù)據(jù)類型一樣,也可以定義結(jié)構(gòu)數(shù)組格式: struct 結(jié)構(gòu)名 數(shù)組名常量表達(dá)式;struct studentchar num10;ch
13、ar name8;char sex;char birth10;char addr50;;struct student stu100;定義數(shù)組stu,可以存放100個(gè)學(xué)生的數(shù)據(jù),數(shù)組stu的每個(gè)元素都是一個(gè)結(jié)構(gòu)體變量結(jié)構(gòu)數(shù)組的初始化方法結(jié)構(gòu)數(shù)組的初始化方法例: struct student stu2 = “1210501304”, “張三”, f, “1994-08-30”, “重慶市”, “1210501330”, “李四”, m, “1994-10-05”, “四川省”;struct studentchar num10;char name8;char sex;char birth10;cha
14、r addr50;;結(jié)構(gòu)數(shù)組的初始化方法結(jié)構(gòu)數(shù)組的初始化方法struct studentchar num10;char name8;char sex;char birth10;char addr50; stu2 = “1210501304”, “張三”, f, “1994-08-30”, “重慶市”, “1210501330”, “李四”, m, “1994-10-05”, “四川省”;結(jié)構(gòu)數(shù)組元素結(jié)構(gòu)數(shù)組元素成員成員的引用的引用#include struct country int num; char name20; x5=1, china, 2, usa, 3, france, 4, en
15、glan, 5, spanish; void main() int i; for(i = 3; i 5; i+) printf(%d%c, xi.num, 0); 程序執(zhí)行結(jié)果4e5s結(jié)構(gòu)數(shù)組元素結(jié)構(gòu)數(shù)組元素整體整體的引用的引用#include struct country int num; char name20; x5=1, china, 2, usa, 3, france, 4, englan, 5, spanish; void main() struct country ss;ss = x3;printf(“%d %sn”, ss.num, ); 同基本類型
16、的指針類似,結(jié)構(gòu)也可以定義其指針變量同基本類型的指針類似,結(jié)構(gòu)也可以定義其指針變量格式: struct 結(jié)構(gòu)名 *指針名struct studentchar num10;char name8;char sex;char birth10;char addr50; ;struct student stu;struct student *pstu;pstu = &stu;通過指針訪問結(jié)構(gòu)成員的方法通過指針訪問結(jié)構(gòu)成員的方法 (1)用)用*訪問訪問struct studentchar num10;char name8;char sex;char birth10;char addr50; ;st
17、ruct student stu;struct student *pstu;pstu = &stu;(*pstu).sex = m;strcpy(*pstu).name, “王剛”)通過指針訪問結(jié)構(gòu)成員的方法通過指針訪問結(jié)構(gòu)成員的方法 (2)用)用-訪問訪問struct studentchar num10;char name8;char sex;char birth10;char addr50; ;struct student stu;struct student *pstu;pstu = &stu;pstu-sex = m;strcpy(pstu-name, “王剛”)通過指
18、針訪問結(jié)構(gòu)成員的方法通過指針訪問結(jié)構(gòu)成員的方法有以下說明和定義語句有以下說明和定義語句 struct student int age; char num8; struct student stu=20,200401“; struct student *p = &stu; 以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是的是 a) stu.num b) p-num c) (*p).num d) stu-agec語言通過語言通過typedef建立新的數(shù)據(jù)類型名建立新的數(shù)據(jù)類型名 例如例如 typedef short int16; int16 x, y;
19、表示定義了兩個(gè)短整形的變量表示定義了兩個(gè)短整形的變量x和和ystruct studentchar num10;char name8;char sex;char birth10;char addr50; ;struct student stu1, stu2;struct studentchar num10;char name8;char sex;char birth10;char addr50; ;typedef struct student student;student stu1, stu2;struct studentchar num10;char name8;char sex;char birth10;char addr50; ;type
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國盆花行業(yè)運(yùn)行態(tài)勢及發(fā)展趨勢分析報(bào)告
- 2025-2030年中國電極箔產(chǎn)業(yè)發(fā)展趨勢規(guī)劃研究報(bào)告
- 2025山東省建筑安全員《B證》考試題庫
- 長沙軌道交通職業(yè)學(xué)院《幼兒戲劇》2023-2024學(xué)年第二學(xué)期期末試卷
- 唐山工業(yè)職業(yè)技術(shù)學(xué)院《軟件工程原理與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧何氏醫(yī)學(xué)院《運(yùn)動(dòng)選材學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 滁州城市職業(yè)學(xué)院《工程實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國計(jì)量大學(xué)《文學(xué)批評(píng)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西演藝職業(yè)學(xué)院《食品營養(yǎng)學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安信息職業(yè)大學(xué)《文獻(xiàn)檢索與科技論文寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 七年級(jí)歷史第5課--安史之亂與唐朝衰亡ppt課件
- 戶外LED顯示屏設(shè)計(jì)施工方案.docx
- 上崗證WORD模板
- 凈土資糧——信愿行(05)第三講安住在彌陀大愿之海
- 化工車間開停車風(fēng)險(xiǎn)分析
- 鈑金k因子和折彎扣除參照表
- 市政小三線施工方案(共22頁)
- 靜壓樁機(jī)、鉆孔灌注樁、沉槽機(jī)CAD圖形
- 易經(jīng)(拼音版)
- 紅旗優(yōu)質(zhì)服務(wù)窗口先進(jìn)事跡材料
- 總監(jiān)辦標(biāo)準(zhǔn)化管理規(guī)定
評(píng)論
0/150
提交評(píng)論