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

正文內容

計算機本科c語言第十一章講-文庫吧

2025-01-03 21:40 本頁面


【正文】 始化。上面例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,)。 } 三、過去許多C版本規(guī)定,自動變量不能在定義時賦初值,只能在函數(shù)執(zhí)行時用賦值語句對各成員分別賦值。新的C標準無此限制,允許對自動變量初始化。 結構體數(shù)組 一個結構體變量中可以存放一組數(shù)據(jù) ( 如一個學生的學號 、 姓名 、 成績 ……等數(shù)據(jù) ) 。如果有10個學生的數(shù)據(jù)需要參加運算 , 顯然應該用數(shù)組 , 這就是結構體數(shù)組 。 結構體數(shù)組與以前介紹過的數(shù)值型數(shù)組不同之處在于每個數(shù)組元素都是一個結構體類型的數(shù)據(jù) , 它們都分別包括各個成員 ( 分量 ) 項 。 一 、 結構體數(shù)組的定義 和定義結構體變量的方法相仿 , 只需說明其為數(shù)組即可 。 如: struct student { int nem; char name[20]。 char sex; int age; float score。 char addr[30]。 }。 struct student stu[3]; 以上定義了一個數(shù)組stu,其元素為 struct student類型數(shù)據(jù),數(shù)組有 3個元素。也可以直接定義一個結構體數(shù)組,如: struct student { int num; …… } stu「 3」; 或 struct {int num。 ...... }stu[3]; 數(shù)組各元素在內存中連續(xù)存放,見 p266圖1 示意。 二、結構體數(shù)組的初始化 結構體數(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ù)可以不指定 ,即寫成以下形式 :stu[ ] ={{…}, {…}, {…}}; 編譯時,系統(tǒng)會根據(jù)給出初值的結構體常量的個數(shù)來確定數(shù)組元素的個數(shù)。 當然,數(shù)組的初始化也可以用以下形式: struct student {int num ......}。 struct student stu[]={{} ,{ } ,{ }} 。 即先定義結構體類型,然后定義數(shù)組為該結構體類型,在定義數(shù)組時初始化。從以上可以看到,結構體數(shù)組初始化的一般形式是在定義數(shù)組的后面加上: = {初值表列 }。 三、舉例 下面舉一個簡單的例子來說明結構體數(shù)組的定義和引用。 [例1 」對候選人得票的統(tǒng)計程序。設有三個侯選人,每次輸入一個得票的候選人的名字,要求最后輸出各人得票結果。 程序如下: 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)。} 運行情況如下: Li Li Fun Zhang Zhang Fun Li Fun Zhang Li Li:4 Zhang:3 Fun:3 一個結構體變量的指針就是該變量所占據(jù)的內存段的 起始地址 。 可以設一個指針變量 , 用來指向一個結構體變量 , 此時該指針變量的值是結構體變量的起始地址 。 指針變量也可以用來指向結構體數(shù)組中的元素 。 指向結構體變量的指針 下面通過一個簡單例子來說明指向結構體變量的指針變量的應用。 [例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類型,然后定義一個struct student類型的變量 個指針變量p,它指向一個 struct student類型的數(shù)據(jù)。在函數(shù)的執(zhí)行部分 stu_1的起始地址賦給p,也就是使p指向 ,stu_1(見圖1 1.7),然后對 ,stu_1的各成員賦值。第一個 printf是輸出函數(shù) stu_1的各個成員的值。用 stu_1.num表示 stu_1中的成員num,余類推。第二個printf函數(shù)也是用來輸出 stu_1各成員的值,但使用的是 (*p).num這樣的形式。 ( *p)表示p指向的結構體變量, (*p).num 是p指向的結構體變量中的成員num 。注意 *p的括弧不可省,因為成員運算符 .優(yōu)先于 ? *? 運算符; *價于 *(p .num)了 . 在C語言中, 為了使用方便和使之直觀,可以把 (*p).num改用p num來代替,即 :p所指向的結構體變量中的num成員 。同樣,( *p).nam e等價于p nam e。也就是說,以下三種形式等價: ①結構體變量 .成員名; ② (*p ).成員名; ③p 成員名 上面程序中最后一個printf函數(shù)中的輸出項表列可以改寫為 : p num,pname,psex,pscore 其請分析以下幾種運算: p > n 得到p指向的結構體變量中的成員n的值 。 p n++ 得到p指向的結構體變量中的成員n的值 ,用完該值后使它加1 。 ++p n 得到p指向的結構體變量中的成員n的值使之加1 ( 先加 ) 。 1 以前已經(jīng)介紹過,可以使用指向數(shù)組或數(shù)組元素的指針和指針變量。同樣,對 結構體數(shù)組 及其元素也可以用指針或指針變量來指向。 [例 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]的各個成員值。然后執(zhí)行p ++,使p自加 1。 P+1意味著增加的地址值為結構體類型數(shù)組 stu的一個元素所占的字節(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)。 注意以下兩點: 1.如果p的初值為 stu,即指向第一個元素,則 p+1后指向下一個元素的起始地址。例如 : ( ++p) num 先使p自加 1,然后得到它指向的元素中的num成員值(即 10102)。 ( p++) num 先得到p num的值(即 10101), 然后使請注意以上二者的不同。 2 . 指針p已定義為指向 struct student類型的數(shù)據(jù) , 它只能指向一個結構體型數(shù)據(jù) ( 也就是p的值是 stu數(shù)組的一個元素的起始地址 ) , 而不能指向一元素中的某一成員 ( 即p的地址不能是成員的地址 ) , 例如 , 下面是不對的: p =amp。 千萬不要認為:反正p是存放地址的 , 可以將任何地址賦給它 。 如果地址類型不相同 , 可以用強制類型轉換 。 p =( struct student*)& 。 .3用指向結構體的指針作函數(shù)參數(shù)
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1