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

正文內(nèi)容

計(jì)算機(jī)本科c語(yǔ)言第十一章講-文庫(kù)吧

2025-01-03 21:40 本頁(yè)面


【正文】 始化。上面例10. 1的定義部分可以放到mai n函數(shù)中。 main() { static struct student { long int num。 char name[20]; char sex。 char addr[20]。 }a={89031,Li Lin,`M39。,123Beijing Road}。 printf(No.:%1d\nname:%s\nsex:%c\naddress:%s\n,)。 } 三、過(guò)去許多C版本規(guī)定,自動(dòng)變量不能在定義時(shí)賦初值,只能在函數(shù)執(zhí)行時(shí)用賦值語(yǔ)句對(duì)各成員分別賦值。新的C標(biāo)準(zhǔn)無(wú)此限制,允許對(duì)自動(dòng)變量初始化。 結(jié)構(gòu)體數(shù)組 一個(gè)結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù) ( 如一個(gè)學(xué)生的學(xué)號(hào) 、 姓名 、 成績(jī) ……等數(shù)據(jù) ) 。如果有10個(gè)學(xué)生的數(shù)據(jù)需要參加運(yùn)算 , 顯然應(yīng)該用數(shù)組 , 這就是結(jié)構(gòu)體數(shù)組 。 結(jié)構(gòu)體數(shù)組與以前介紹過(guò)的數(shù)值型數(shù)組不同之處在于每個(gè)數(shù)組元素都是一個(gè)結(jié)構(gòu)體類(lèi)型的數(shù)據(jù) , 它們都分別包括各個(gè)成員 ( 分量 ) 項(xiàng) 。 一 、 結(jié)構(gòu)體數(shù)組的定義 和定義結(jié)構(gòu)體變量的方法相仿 , 只需說(shuō)明其為數(shù)組即可 。 如: struct student { int nem; char name[20]。 char sex; int age; float score。 char addr[30]。 }。 struct student stu[3]; 以上定義了一個(gè)數(shù)組stu,其元素為 struct student類(lèi)型數(shù)據(jù),數(shù)組有 3個(gè)元素。也可以直接定義一個(gè)結(jié)構(gòu)體數(shù)組,如: struct student { int num; …… } stu「 3」; 或 struct {int num。 ...... }stu[3]; 數(shù)組各元素在內(nèi)存中連續(xù)存放,見(jiàn) p266圖1 示意。 二、結(jié)構(gòu)體數(shù)組的初始化 結(jié)構(gòu)體數(shù)組可以初始化。如: struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } stu[3]={{101,“Li Liu”,?m?,18,“103Beijing Road}, {102,“Zhang”,?m?,19,99,”130ShangHai Road”},{104,“Wang Min”,39。F?,20,”10Guangzhu Road”}}; 定義數(shù)組 stu時(shí),元素個(gè)數(shù)可以不指定 ,即寫(xiě)成以下形式 :stu[ ] ={{…}, {…}, {…}}; 編譯時(shí),系統(tǒng)會(huì)根據(jù)給出初值的結(jié)構(gòu)體常量的個(gè)數(shù)來(lái)確定數(shù)組元素的個(gè)數(shù)。 當(dāng)然,數(shù)組的初始化也可以用以下形式: struct student {int num ......}。 struct student stu[]={{} ,{ } ,{ }} 。 即先定義結(jié)構(gòu)體類(lèi)型,然后定義數(shù)組為該結(jié)構(gòu)體類(lèi)型,在定義數(shù)組時(shí)初始化。從以上可以看到,結(jié)構(gòu)體數(shù)組初始化的一般形式是在定義數(shù)組的后面加上: = {初值表列 }。 三、舉例 下面舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明結(jié)構(gòu)體數(shù)組的定義和引用。 [例1 」對(duì)候選人得票的統(tǒng)計(jì)程序。設(shè)有三個(gè)侯選人,每次輸入一個(gè)得票的候選人的名字,要求最后輸出各人得票結(jié)果。 程序如下: struct person { char name[20] int count; } lead[3]={“Li“,0,“Zhang“,0,“Fun,0}。 main() { int i,j; char leader[20]; for(i=0。i10。i++) { scanf( ? % s, leader); for (j=0。j3。j++) if(strcmp(leader,lead[j].name)==0) lead [j].count++。} for(i=0。i3。i++) printf(%5s:%d\n,lead [i].name,lead[i].count)。} 運(yùn)行情況如下: Li Li Fun Zhang Zhang Fun Li Fun Zhang Li Li:4 Zhang:3 Fun:3 一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的 起始地址 。 可以設(shè)一個(gè)指針變量 , 用來(lái)指向一個(gè)結(jié)構(gòu)體變量 , 此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址 。 指針變量也可以用來(lái)指向結(jié)構(gòu)體數(shù)組中的元素 。 指向結(jié)構(gòu)體變量的指針 下面通過(guò)一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明指向結(jié)構(gòu)體變量的指針變量的應(yīng)用。 [例1 1.3] # include “ main() {struct student {long num。 char name[20]; char sex。 float score; }。 struct student stu_1。 struct student *p; p=amp。stu_1。 stu_1. num=89101; strcpy( stu_1. name, ? li lin”); =?M?; = ; printf( ? No,: %ld\n name: %s\n sex: %c\n score: %f\n”, , , ) 。 printf(\nNo.:%1d\nname:%s\nsex:%c\nscore:%f\n,(*p).num,(*p).name,(*.p).sex,(*p).score)。 } p 89101 “Lilin” ?M? 在主函數(shù)中定 struct student類(lèi)型,然后定義一個(gè)struct student類(lèi)型的變量 個(gè)指針變量p,它指向一個(gè) struct student類(lèi)型的數(shù)據(jù)。在函數(shù)的執(zhí)行部分 stu_1的起始地址賦給p,也就是使p指向 ,stu_1(見(jiàn)圖1 1.7),然后對(duì) ,stu_1的各成員賦值。第一個(gè) printf是輸出函數(shù) stu_1的各個(gè)成員的值。用 stu_1.num表示 stu_1中的成員num,余類(lèi)推。第二個(gè)printf函數(shù)也是用來(lái)輸出 stu_1各成員的值,但使用的是 (*p).num這樣的形式。 ( *p)表示p指向的結(jié)構(gòu)體變量, (*p).num 是p指向的結(jié)構(gòu)體變量中的成員num 。注意 *p的括弧不可省,因?yàn)槌蓡T運(yùn)算符 .優(yōu)先于 ? *? 運(yùn)算符; *價(jià)于 *(p .num)了 . 在C語(yǔ)言中, 為了使用方便和使之直觀,可以把 (*p).num改用p num來(lái)代替,即 :p所指向的結(jié)構(gòu)體變量中的num成員 。同樣,( *p).nam e等價(jià)于p nam e。也就是說(shuō),以下三種形式等價(jià): ①結(jié)構(gòu)體變量 .成員名; ② (*p ).成員名; ③p 成員名 上面程序中最后一個(gè)printf函數(shù)中的輸出項(xiàng)表列可以改寫(xiě)為 : p num,pname,psex,pscore 其請(qǐng)分析以下幾種運(yùn)算: p > n 得到p指向的結(jié)構(gòu)體變量中的成員n的值 。 p n++ 得到p指向的結(jié)構(gòu)體變量中的成員n的值 ,用完該值后使它加1 。 ++p n 得到p指向的結(jié)構(gòu)體變量中的成員n的值使之加1 ( 先加 ) 。 1 以前已經(jīng)介紹過(guò),可以使用指向數(shù)組或數(shù)組元素的指針和指針變量。同樣,對(duì) 結(jié)構(gòu)體數(shù)組 及其元素也可以用指針或指針變量來(lái)指向。 [例 11.4] struct student {int num。 char name「 20]; char sex。 int age; }; struct student stu[ 3] ={ {10101, ? li lin”, ‘ M?, 18}, {1010 2, ? zhang Fun”, ’ M?,19}, {10104,wang Min,`F`,20}}。 main() {struct student *p; printf(”No. Name sex age\n”); for(p =stu; p< stu+3;p ++) printf( ? %5d%20s%2c%4d\n”, pnum, pname, psex,page); } 在第一次循環(huán)中輸出 stu[ 0]的各個(gè)成員值。然后執(zhí)行p ++,使p自加 1。 P+1意味著增加的地址值為結(jié)構(gòu)體類(lèi)型數(shù)組 stu的一個(gè)元素所占的字節(jié)數(shù)(在本例中為2+20+ 1+2 =25字節(jié)),p ++使p指向 stu[1]的起始地址,在第二次循環(huán)中輸出 stu[1]的各成員值。在執(zhí)行p ++后,p的值等于 stu+2,再輸出 stu[2]的各成員值。 在執(zhí)行p ++后,p的值變?yōu)?stu+3,已不再小于stu+3了,不再執(zhí)行循環(huán)。 注意以下兩點(diǎn): 1.如果p的初值為 stu,即指向第一個(gè)元素,則 p+1后指向下一個(gè)元素的起始地址。例如 : ( ++p) num 先使p自加 1,然后得到它指向的元素中的num成員值(即 10102)。 ( p++) num 先得到p num的值(即 10101), 然后使請(qǐng)注意以上二者的不同。 2 . 指針p已定義為指向 struct student類(lèi)型的數(shù)據(jù) , 它只能指向一個(gè)結(jié)構(gòu)體型數(shù)據(jù) ( 也就是p的值是 stu數(shù)組的一個(gè)元素的起始地址 ) , 而不能指向一元素中的某一成員 ( 即p的地址不能是成員的地址 ) , 例如 , 下面是不對(duì)的: p =amp。 千萬(wàn)不要認(rèn)為:反正p是存放地址的 , 可以將任何地址賦給它 。 如果地址類(lèi)型不相同 , 可以用強(qiáng)制類(lèi)型轉(zhuǎn)換 。 p =( struct student*)& 。 .3用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1