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

正文內(nèi)容

結(jié)構(gòu)體、共用體與枚舉(編輯修改稿)

2025-06-18 22:09 本頁面
 

【文章內(nèi)容簡介】 amp。b。 =10。 =amp。c。 C 動態(tài)存儲分配函數(shù) Turbo C動態(tài)存儲分配函數(shù)有: malloc、 calloc、 free、realloc, 這些函數(shù)的定義均包含在頭文件 。 ( 1) malloc函數(shù) void *malloc(unsigned int size) 調(diào)用形式為: (類型 *) malloc(size) 例如: int *pi。 float *pf。 pi=(int *)malloc(2)。 pf=(float *)malloc(4)。 (2) calloc函數(shù) void *calloc(unsigned n, unsigned size) 調(diào)用形式為: (類型 *) calloc(n, size) 如: char *ps。 ps=(char *)calloc(10, sizeof(char))。 C 動態(tài)存儲分配函數(shù) (3) realloc函數(shù) void *realloc(void *ptr, unsigned newsize) 調(diào)用形式為: (類型 *) realloc(ptr, newsize) (4) free函數(shù) void free(void *) 調(diào)用形式為: free(p)。 其中指針變量 p必須是由 malloc、 calloc、 realloc函數(shù)分配存儲單元存放首地址的指針變量 , 該函數(shù)的作用是收回由 p指向的動態(tài)分配的存儲單元 。 該函數(shù)無返回值 。 C 動態(tài)存儲分配函數(shù) 由包含一個指針域的結(jié)點組成的鏈表為單向鏈表。 ① 建立并初始化鏈表 ② 遍歷訪問鏈表 ( 包括查找結(jié)點 、 輸出結(jié)點等 ) ③ 刪除鏈表中的結(jié)點 ④ 在鏈表中插入結(jié)點 (1) 建立單向鏈表 建立單向鏈表的步驟如下: ① 建立頭結(jié)點 ( 或定義頭指針變量 ) ; ② 讀取數(shù)據(jù); ③ 生成新結(jié)點; ④ 將數(shù)據(jù)存入結(jié)點的數(shù)據(jù)域中; ⑤ 將新結(jié)點連接到鏈表中 ( 將新結(jié)點地址賦給上一個結(jié)點的指針域 ) 。 ⑥ 重復步驟 ② ~ ⑤ , 直到輸入結(jié)束 。 【 例 915】 建立帶有頭結(jié)點的單向鏈表,當輸入 1時結(jié)束。 include struct node {int data。 struct node *next。 }。 main() { int x。 struct node *h, *s, *r。 h=(struct node *)malloc(sizeof(struct node))。 r=h。 scanf(%d,amp。x)。 while(x!=1) { s=(struct node *)malloc(sizeof(struct node))。 sdata=x。 rnext=s。 r=s。 scanf(%d,amp。x)。 } rnext= NULL 。 } (2) 輸出鏈表 輸出鏈表即順序訪問鏈表中各結(jié)點的數(shù)據(jù)域,方法是:從頭結(jié)點開始,不斷地讀取數(shù)據(jù)和下移指針變量,直到尾結(jié)點為止。 【 例 916】 編寫單向鏈表的輸出函數(shù) 。 void print_slist(struct node *h) { struct node *p。 p=hnext。 if(p== NULL) printf(Linklist is null!\n)。 else { printf(head)。 while(p!= NULL) {printf(%d, pdata)。 p=pnext。 } printf(end\n)。 } } ( 3)刪除單向鏈表中的一個結(jié)點 刪除單向鏈表中一個結(jié)點的方法步驟如下,參見 ① 找到要刪除結(jié)點的前驅(qū)結(jié)點; ② 將要刪除結(jié)點的后繼結(jié)點的地址賦給要刪除結(jié)點的前驅(qū)結(jié)點的指針域; ③ 將要刪除結(jié)點的存儲空間釋放 。 【 例 917】 編寫函數(shù),在單向鏈表中刪除值為 x的結(jié)點 /* */ void delete_node(struct node *h, int x) { struct node *p,*q。 q=h。 p=hnext。 /* 工作指針初始化, q在前、 p在后指向第一個結(jié)點 */ if(p!= NULL) /* 表非空 */ {while((p!=NULL) amp。amp。 (pdata!=x)) /* 未到表尾,查找 x的位置 */ {q=p。 p=pnext。} /* p、 q下移, q指向 p的前趨結(jié)點 */ if(pdata==x) {qnext=pnext。 free(p)。} /* 刪除值為 x的結(jié)點 */ } } ( 4)在單向鏈表的某結(jié)點前插入一個結(jié)點 在單向鏈表的某結(jié)點前插入一個結(jié)點的步驟如下: ① 開辟一個新結(jié)點并將數(shù)據(jù)存入該結(jié)點的數(shù)據(jù)域; ② 找到插入點結(jié)點; ③將新結(jié)點插入到鏈表中:將新結(jié)點的地址賦給插入點上一個結(jié)點的指針域,并將插入點的地址存入新結(jié)點的指針域 【 例 918】 分析 :本例結(jié)合了查找和插入兩種功能 , 可能遇到三種情況: ① 鏈表非空 ,值為 x的結(jié)點存在 ,則插在值為 x的結(jié)點之前; ② 鏈表非空 ,值為 x的結(jié)點不存在 ,則插在表尾; ③ 鏈表為空 ,也相當于值為 x的結(jié)點不存在 ,則插在表尾 。 編寫函數(shù),在單向鏈表中值為 x的結(jié)點前插入值為 y的結(jié)點,若值為 x的結(jié)點不存在,則插在表尾。 【 例 918】 函數(shù)編寫如下: void insert_node(struct node *h, int x, int y) { struct node *s,*p,*q。 s=(struct node *)malloc(sizeof(struct node))。 sdata=y。 /* 向新結(jié)點存入數(shù)據(jù) */ q=h。 p=hnext。 /* 工作指針初始化, p指向第一個結(jié)點 */ while((p!=NULL) amp。amp。 (pdata!=x)) {q=p。 p=pnext。} /* p、 q下移, q指向 p的前趨結(jié)點 */ qnext=s。 snext=p。 } 共用體 問題 :什么是共用體類型?什么是共用體變量?共用體類型與結(jié)構(gòu)體類型有什么區(qū)別和聯(lián)系? 共用體類型的定義 共用體類型的定義與結(jié)構(gòu)體類型的定義類似 , 但所用關(guān)鍵字不同 , 共用體類型用關(guān)鍵字 union定義, 具體形式為: union 類型名 {成員項表列 }; union exam { int a。 float b。 char c。 }。 共用體變量的說明 與結(jié)構(gòu)體變量的說明類似 , 也有三種方式: 1. 先定義共用體類型 , 再用共用體類型定義共用體變量 union 類型名 {成員表列 }。 union 類型名 變量名表; 例如用 union exam類型定義共用體變量 x、 y: union exam x, y。 2. 定義共用體類型名的同時定義共用體變量 union 類型名 {成員表列 }變量名表; union exam { int a。 float b。 char c。 }x,y。 3.不定義類型名直接定義共用體變量 union {成員表列 }變量名表 ; 定義了共用體變量后 , 系統(tǒng)為共用體變量開辟一定的存儲單元 。 由于共用體變量先后存放不同類型的成員 , 系統(tǒng)開辟的共用體變量的存儲單元的字節(jié)數(shù)為最長的成員需要的字節(jié)數(shù) 。 例如對上面定義的共用體類型 union exam或變量 x,表達式 sizeof(union exam)和 sizeof(x)的值均為 4。 另外,先后存放各成員的首地址都相同,即共用體變量、共用體變量的所有成員它們的首地址都相同。 共用體變量的引用 引用共用體變量的形式以及注意事項均與引用結(jié)構(gòu)體變量相似 , 其要點如下: (1) 一般只能引用共用體變量的成員而不能整體引用共用體變量 , 盡管它同時只有一個成員有值 。 共用體變量的一個基本類型成員相當于一個普通變量, 可參與該成員所屬數(shù)據(jù)類型的一切運算 。 例如對上面定義的共用體變量 x可以引用的成員有: (2) 與結(jié)構(gòu)體類似 , 同一類型的共用體變量可相互賦值 。 例如有賦值語句 =3。 共用體變量 x有值 , 則可有下面的賦值語句: y=x。 這樣 3。 (3) 在賦值和輸入輸出方面也與結(jié)構(gòu)體類似,即不允許對共用體變量整體賦(常數(shù))值;共用體的輸入和輸出也只能對共用體變量的成員進行,不允許直接對共用體變量進行輸入和輸出,盡管它同時只存有一個成員! (1) 變體記錄問題 【 例 919】 輸入 N個人的信息 , 共同的信息有:姓名 、 性別 , 另外 , 職業(yè) (job)為教師 (39。t39。)則登記其單位 (group), 職業(yè)為學生 (39。s39。)則登記其班級 (class), 最后將信息輸出 。 程序如下: define N 2 main() { struct {char name[20]。 char sex。 char job。 union { int class。 char group[20]。 }category。 }person[N]。 int i。 printf(Enter %d person
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1