freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

結(jié)構(gòu)體、共用體與枚舉-文庫吧

2025-04-23 22:09 本頁面


【正文】 (2) 用指向結(jié)構(gòu)體變量的指針變量表示結(jié)構(gòu)體變量的成員 如果象上面那樣定義了指向結(jié)構(gòu)體變量的指針變量 p以后, *p即表示 p所指向的結(jié)構(gòu)體變量student,其成員 : (*p).num 或者 pnum 第二種表示與第一種表示等價,運(yùn)算符“ ”與“ .”優(yōu)先級相同,具有最高的優(yōu)先級。 結(jié)構(gòu)體指針 【 例 93】 利用結(jié)構(gòu)體指針變量輸出結(jié)構(gòu)體數(shù)據(jù) /* */ main() { struct stu_type {long num。 char name[20]。 float score[2]。 }student={20210101, wang, 89, }, *p。 p=amp。student。 printf(%ld\t%s\t%%\n,pnum, pname, pscore[0], pscore[1])。 } 一維數(shù)組的數(shù)組名代表數(shù)組的首地址,一維結(jié)構(gòu)體數(shù)組也一樣??梢詫⒁痪S結(jié)構(gòu)體數(shù)組名賦給指向結(jié)構(gòu)體變量的指針變量,該指針變量將指向下標(biāo)為 0的元素,它可以 在數(shù)組元素之間移動。 【 例 94】 用指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體數(shù)組 /* */ main() { struct stu_type {long num。 char name[20]。 int age。 }st[3]={{1001,wang,19},{1002, li,18},{1003, zhang,20}}, *p。 printf(No.\tName\tAge\n)。 for(p=st。 pst+3。 p++) printf(%ld\t%s\t%d\n,pnum, pname, page)。 } 【 例 95】 輸出上例中全部學(xué)生的 name信息 /* */ main() { struct stu_type {long num。 char name[20]。 int age。 }st[3]={{1001, wang,19},{1002, li,18},{1003, zhang,20}},*p,*q。 q=(struct stu_type *)st[0].name。 for(p=q。 pq+3。 p++) printf(%s\t, p)。 } 結(jié)構(gòu)體與函數(shù) (1) 結(jié)構(gòu)體變量成員作為函數(shù)的實(shí)參 由于結(jié)構(gòu)體變量成員存放基本類型數(shù)據(jù),因此這種情況同基本類型有值變量做實(shí)參,實(shí)現(xiàn)值傳遞。要注意實(shí)參與形參類型的一致。 【 例 96】 打印學(xué)號為 20210102學(xué)生的年齡 define N 3 void PRINT(int age) {printf(Age:%d\n, age)。} main() { struct stu_type {long num。 char name[20]。 int age。 }st[N]={{20210101, wang,19},{20210102, li,18},{20210103, zhao,20}}。 int i。 for(i=0。iN。i++) if(st[i].num==20210102) PRINT(st[i].age)。 } (2) 結(jié)構(gòu)體變量作為函數(shù)參數(shù) 這種用法的參數(shù)形式為: 形參:結(jié)構(gòu)體變量; 實(shí)參:有值結(jié)構(gòu)體變量或結(jié)構(gòu)體數(shù)組元素 。 通過實(shí)參將相應(yīng)的結(jié)構(gòu)體類型數(shù)據(jù)傳給對應(yīng)的形參, 實(shí)現(xiàn)傳值調(diào)用 , 不同于數(shù)組作參數(shù)的傳址調(diào)用 ! 【 注意 】 在結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù)時,為了在虛實(shí)結(jié)合時保持形參與實(shí)參類型的一致,應(yīng)將結(jié)構(gòu)體類型定義成外部的,即在所有函數(shù)之前定義結(jié)構(gòu)體類型。 結(jié)構(gòu)體與函數(shù) 【 例 97】 打印學(xué)號為 20210102學(xué)生的全部信息 define N 3 struct stu_type {long num。 char name[20]。 int age。 }。 void PRINT(struct stu_type stu) { printf(No.\t\tName\tAge\n)。 printf(%16ld%s\t%d\n,)。 } 【 例 97】 main() { struct stu_type st[N] ={{20210101, wang,19},{20210102, li ,18}, {20210103, zhao,20}}。 int i。 for(i=0。iN。i++) if(st[i].num==20210102) PRINT(st[i])。 } 此用法一般用于結(jié)構(gòu)體數(shù)組問題 。 與基本類型一維數(shù)組的情況相同 , 實(shí)現(xiàn)傳址調(diào)用 , 參數(shù)用法如下: 形參: 結(jié)構(gòu)體數(shù)組或結(jié)構(gòu)體指針變量; 實(shí)參: 結(jié)構(gòu)體數(shù)組名或取得數(shù)組名首地址的結(jié)構(gòu)體指針變量。 【 例 98】 同上例,輸出全部學(xué)生的信息 define N 3 struct stu_type {long num。 char name[20]。 int age。 }。 void PRINT(struct stu_type *p) { int i。 printf(No.\t\tName\tAge\n)。 for(i=0。iN。i++) printf(%16ld%s\t%d\n,(p+i)num,(p+i)name,(p+i)age)。 } main() { struct stu_type st[N] ={{20210101,wang,19},{20210102,li,18},{20210103,zhao,20}}。 PRINT(st)。 } 函數(shù)返回值可以是結(jié)構(gòu)體類型的值,也可以是指向結(jié)構(gòu)體變量(或數(shù)組元素)的指針。當(dāng)函數(shù)返回值是結(jié)構(gòu)體類型的值時,稱該函數(shù)為結(jié)構(gòu)體類型函數(shù);當(dāng)函數(shù)返回值是指向結(jié)構(gòu)體類型存儲單元的指針時,稱該函數(shù)為結(jié)構(gòu)體類型指針函數(shù)。 【 例 99】 同 【 例 97】 ,打印學(xué)號為 20210102學(xué)生的全部信息,查找用結(jié)構(gòu)體類型函數(shù)實(shí)現(xiàn) define N 3 struct stu_type {long num。 char name[20]。 int age。 }。 struct stu_type fun(struct stu_type st[]) { int i。 for(i=0。iN。i++) if(st[i].num==20210102) return(st[i])。 } main() { struct stu_type st[N] ={{20210101, wang,19},{20210102, li,18},{20210103, zhao,20}}。 struct stu_type stu; stu=fun(st)。 printf(No.\t\tName\tAge\n)。 printf(%16ld%s\t%d\n,)。 } 動態(tài)內(nèi)存分配與鏈表 (1) 固定內(nèi)存分配與動態(tài)內(nèi)存分配的概念 ① 固定內(nèi)存分配 在 C語言程序中用說明語句定義的各種存儲類型 ( 自動 、 靜態(tài) 、 寄存器 、 外部 ) 的變量或數(shù)組 , 均由系統(tǒng)分配存儲單元 ,程序員無法在函數(shù)的執(zhí)行部分干預(yù)存儲單元的分配和釋放 。 這樣的存儲分配叫固定內(nèi)存分配 , 又叫系統(tǒng)存儲分配 。 ② 動態(tài)內(nèi)存分配 C語言允許程序員在函數(shù)執(zhí)行部分的任何地方使用動態(tài)存儲分配函數(shù)(本節(jié) 2.)開辟或回收存儲單元,這樣的存儲分配叫動態(tài)內(nèi)存分配。動態(tài)內(nèi)存分配使用自由、節(jié)約內(nèi)存。利用動態(tài)內(nèi)存分配建立的鏈表是一種十分重要的數(shù)據(jù)結(jié)構(gòu)。 (2) 鏈表的概念 ① 結(jié)點(diǎn) 組成鏈表的基本存儲單元叫結(jié)點(diǎn) , 該存儲單元存有若干數(shù)據(jù)和指針 , 由于存放了不同數(shù)據(jù)類型的數(shù)據(jù) , 它的數(shù)據(jù)類型應(yīng)該是結(jié)構(gòu)體類型 。 在結(jié)點(diǎn)的結(jié)構(gòu)體存儲單元中 , 存放數(shù)據(jù)的域叫數(shù)據(jù)域 , 存放指針的域叫指針域 , 簡單結(jié)點(diǎn)的形式如圖所示 。 數(shù)據(jù)域 指針域 結(jié)點(diǎn)類型定義的一般形式為: struct 類型名 {數(shù)據(jù)域定義; struct 類型名 * 指針域名 。 }。 例如有如下結(jié)點(diǎn)類型的定義: struct student {int num。 float score。 struct student *next。 } ② 鏈表 若有一些結(jié)點(diǎn),每一個結(jié)點(diǎn)的指針域存放下一個結(jié)點(diǎn)的地址,因此就指向下一個結(jié)點(diǎn), 這樣就首尾銜接形成一個鏈狀結(jié)構(gòu),稱為鏈表。用上面的結(jié)構(gòu)體類型建立的有 4個結(jié)點(diǎn)的鏈表如圖所示。 (2) 鏈表的概念 頭結(jié)點(diǎn): 指向鏈表中第一個包含有用數(shù)據(jù)的結(jié)點(diǎn) ,本身不包含有用數(shù)據(jù) , 用于對鏈表的訪問 。 尾結(jié)點(diǎn): 不指向其他結(jié)點(diǎn)的結(jié)點(diǎn)。尾結(jié)點(diǎn)的指針域存放的地址為 NULL(或 0,或 39。\039。)。 (2) 鏈表的概念 相同點(diǎn): 它們均由同類型的存儲單元組成 。 不同點(diǎn): 數(shù)組由固定分配的連續(xù)的存儲單元組成,定義后存儲單元不可增加或減少,對數(shù)組元素的訪問為隨機(jī)訪問。鏈表可由不連續(xù)的存儲單元(結(jié)點(diǎn))組成,結(jié)點(diǎn)一般為動態(tài)分配存儲單元,可隨時增、刪。只能順序訪問鏈表中的結(jié)點(diǎn)。 鏈表與數(shù)組 ③ 建立一個簡單鏈表 =15。 =NULL。 p=head。 while(p!=NULL) { printf(%d,pdata)。 p=pnext。 } printf(NULL\n)。 } 【 例 911】 建立一個簡單的鏈表并輸出 struct node {int data。 struct node *next。 }。 main() {struct node a, b, c, *head, *p。 head=amp。a。 =5。 =
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1