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

正文內(nèi)容

c語(yǔ)言用戶自定義數(shù)據(jù)類型(編輯修改稿)

2025-06-16 21:21 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 是實(shí)現(xiàn)結(jié)構(gòu)變量的動(dòng)態(tài)存儲(chǔ)分配 以及函數(shù)之間的雙向數(shù)據(jù)傳遞。 ? 當(dāng)然,結(jié)構(gòu)變量的成員也可以使指針,甚至可以是指向相同類型結(jié)構(gòu)變量的指針,這是構(gòu)造鏈表的基礎(chǔ)。 36 struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針名 。 例 struct child *p。 存放結(jié)構(gòu)體變量在內(nèi)存的起始地址 struct child { char initial。 int age。 int grade。 }boy 。 struct child *p=amp。boy initial age grade boy p 37 指向結(jié)構(gòu)變量的指針 2. 結(jié)構(gòu)指針的初始化 struct child { char initial。 int age。 int grade。 }boy, *p1, *p2。 p1 = amp。boy。 p2 = NULL。 struct child *p = amp。boy。 38 指向運(yùn)算符 優(yōu)先級(jí) : 1 結(jié)合方向:從左向右 例 int n。 int *p=amp。n。 *p=10。 ? n=10 struct student stu1。 struct student *p=amp。stu1。 =101。 ? (*p).num=101 ( 1) (*結(jié)構(gòu)體指針 ).成員名 例如: (* p).num ( 2)結(jié)構(gòu)體指針 成員名 例如: p num 39 例 include include struct Student {long num。 char name[20]。 int age。 char sex。 }。 void main() { struct Student student,*p。 p=amp。student。 strcpy(,wang li)。 =89101。 =18。 =39。M39。 printf(\nname:%s\nnumber:%ld\nage:%d\nsex:%c\n, , ,)。 printf(\nname:%s\nnumber:%ld\nage:%d\nsex:%c\n, (*p).name,(*p).num, (*p).age,(*p).sex)。 printf(\nname:%s\nnumber:%ld\nage:%d\nsex:%c\n“ ,pname,pnum, page,psex)。} 40 include struct Student {int number。 char *name。 }。 void main() { struct Student stu={1101,lili}。 printf(%s\n,)。} 41 指針變量作為結(jié)構(gòu)成員 include struct Student {int number。 char *name。 }。 void main() { struct Student stu。 scanf(%d,amp。)。 =(char *)calloc(21,sizeof(char))。 scanf(%s,)。 printf(%s\n,)。 printf(%s\n,)。} 指針變量如果沒有初始化,它的 指向是不確定的 ,也即不可用。必須調(diào)用 calloc函數(shù)為其申請(qǐng)內(nèi)存空間 42 指針變量作為結(jié)構(gòu)成員 1. 指針類型的成員變量要賦值時(shí)需 分配內(nèi)存空間 ,最后還要 釋放這塊內(nèi)存區(qū)域。 ?介紹三個(gè)存儲(chǔ)管理庫(kù)函數(shù),原型說(shuō)明在 “ ”頭文件中,使用包含到源程序中 ⑴ 動(dòng)態(tài)分配存儲(chǔ)區(qū)函數(shù) malloc( ) 函數(shù)原型: void *malloc(unsigned size)。 調(diào)用格式: malloc(size) 功能:在內(nèi)存分配一個(gè) size字節(jié)的存儲(chǔ)區(qū)。調(diào)用 結(jié)果為新分配的存儲(chǔ)區(qū)的首地址,是一個(gè) void 類型指針。若分配 失敗 ,則返回 NULL(即 0) 。 43 指針變量作為結(jié)構(gòu)成員 ⑵ 動(dòng)態(tài)分配存儲(chǔ)區(qū)函數(shù) calloc( ) 函數(shù)原型: void *calloc(unsigned int n,unsigned int size)。 調(diào)用格式: calloc(n,size) 功能:在內(nèi)存分配一個(gè) n倍 size字節(jié)的存儲(chǔ)區(qū)。 調(diào)用結(jié)果為新分配的存儲(chǔ)區(qū)的首地址,是一個(gè) void 類型指針。若分配失敗,則返回 NULL(即 0)。 44 指針變量作為結(jié)構(gòu)成員 ⑶ 釋放動(dòng)態(tài)分配存儲(chǔ)區(qū)函數(shù) free( ) 函數(shù)原型: void free(void *p)。 此函數(shù)無(wú)返回值 實(shí)參必須是一個(gè)指向動(dòng)態(tài)分配存儲(chǔ)區(qū) 的指針,它可以是任何類型的指針變量。 調(diào)用格式: free(p) 功能:釋放 p所指向的動(dòng)態(tài)分配的存儲(chǔ)區(qū) 。 45 可以定義一個(gè) 結(jié)構(gòu)指針指向一個(gè)結(jié)構(gòu)數(shù)組 ,也就可以利用該指針間接訪問(wèn)結(jié)構(gòu)數(shù)組的元素。 Struct A { int a。 float b。 }arr[3],*p。 p=arr。 1 2 3 arr[0] arr[1] arr[2] p arr 1 2 3 arr[0] arr[1] arr[2] p arr 46 指向結(jié)構(gòu)數(shù)組的指針 ( 1) pa。 得到 p指向的結(jié)構(gòu)數(shù)組元素中的 成員 a的值 ( 2) ( p++)a。 先得到 p指向的結(jié)構(gòu)數(shù)組元素中的 成員 a的值 ,然后 再對(duì) p指針加 1 ( 3) (++ p)a。 先讓 p指針加 1,然后得到 p指向的結(jié)構(gòu)數(shù)組元素中的成員 a的值 ( 4) ( pa)++。 先得到 p指向的結(jié)構(gòu)數(shù)組元素中的成員 a的值,然后 再對(duì)得到的值加 1 47 例 include struct Student {int num。 char name[20]。 char sex。 int age。 }。 struct Student stu[2]={{10101,li lin,39。M39。,18}, {10102,zhang fan,39。M39。,19}}。 void main() { struct Student *p。 clrscr()。 printf(No. name sex age\n)。 for(p=stu。pstu+2。p++) printf(%11d%12s%2c%10d\n,pnum,pname, psex,page)。 } 48 1.結(jié)構(gòu)體變量作為函數(shù)的形參的三種形式: ( 1)以 結(jié)構(gòu)體變量的成員 作為參數(shù),傳遞結(jié)構(gòu)體變量的 成員的值 。 ( 2)以 結(jié)構(gòu)體變量 作為參數(shù), 直接傳遞結(jié)構(gòu)體變量的值 。 ? 結(jié)構(gòu)變量整體傳送,即將實(shí)參結(jié)構(gòu)體變量的各個(gè)成員的值逐個(gè)傳遞給形參結(jié)構(gòu)體變量的對(duì)應(yīng)成員。 ? 注意,實(shí)參與形參必須是相同結(jié)構(gòu)體類型的變量。 ( 3)以結(jié) 構(gòu)體指針 作為參數(shù),傳遞 結(jié)構(gòu)體變量的地址 。 49 例 :輸出學(xué)生的姓名與年齡 struct Student { int num。 char name[20]。 int age。 }。 void age(struct Student *p) { printf(%s\n,pname)。 printf(%d\n, page)。 } void main() { struct Student stu[3] = { {101, kiki,23}, {102, mimi,24}, {103, nana, 23} }。 struct Student *p。 p = amp。stu[0]。 age(p+1)。 } 50 例 : 計(jì)算三個(gè)學(xué)生的總分和平均分 (利用結(jié)構(gòu)指針 )。 main() { struct stu { char name[10]。 float score。 } stu[3]={Mary, 76, John, 85, Tom, 81}, *p=stu。 int i。 float sum=0。 for (i=1。 i=3。 i++) { sum+=pscore。 p++。 } printf(%, % \n, sum, sum/3)。 getch()。 } 51 結(jié)構(gòu)類型的應(yīng)用 例:定義一個(gè)包括年、月、日成員的結(jié)構(gòu)類型變量,輸入一個(gè)符合常規(guī)的日期,算出該日期是這一年中的第幾天并輸出。 【 分析 】 這里主要存在一個(gè)閏年問(wèn)題,也就是當(dāng)該年為閏年時(shí),二月份有 29天,其余為 28天。判斷該年是否為閏年的條件是:年份是否能被 4整除,但不能 100整除;或能被 400整除;當(dāng)然還要判斷輸入的日期是否有效以及各月的天數(shù)情況。 52 結(jié)構(gòu)類型的應(yīng)用 main() { struct { unsigned year, month, day。 } x。 int maxday[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}。 int i, n=0。 /* n為天數(shù) */ do { printf(請(qǐng)輸入年 月 日 :)。 scanf(%d%d%d, amp。, amp。, amp。)。 if ((%4==0 amp。amp。 %100!=0) || (%400==0)) maxday[2]=29。 }while (0||1||12||1||maxday[])。 for (i=1。 i。 i++) n+=maxday[i]。 n+=。 printf(“%d年 %d月 %d日是該年的第 %d天。 \n,n)。 getch()。 } 53 課 堂 練 習(xí) 1. 下面程序段的輸出結(jié)果為( )。 main() { struct date { int a。 char s[5]。
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1