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

正文內(nèi)容

c語言教程:c語言第四章-資料下載頁

2024-10-04 16:33本頁面
  

【正文】 (j=0。 j3。 j++) /*得票人姓名與 3個(gè)候選人姓名比較 */ ? if (strcmp(leader_name,stu[i].name) == 0) /*姓名相等 */ ? stu[i].count++。 /*該候選人的 count成員自增 */ ? } ? printf(\n)。 ? for(i=0。 i3。 i++) /* 輸出 3個(gè)候選人的姓名和得票數(shù) */ ? printf(%5s : %d\n, stu[i].name, stu[i].count)。 ? } ? 5. 結(jié)構(gòu)體指針 ? 結(jié)構(gòu)體變量在內(nèi)存中的起始地址稱為結(jié)構(gòu)體變量的指針。程序中可以定義一個(gè)指針變量,用來指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址,指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。這樣,就可以通過指針變量對(duì)結(jié)構(gòu)體變量或者結(jié)構(gòu)體數(shù)組的元素進(jìn)行訪問了。 ? 通過指向結(jié)構(gòu)體變量的指針來訪問結(jié)構(gòu)體變量的成員,與直接使用結(jié)構(gòu)體變量的效果一樣。一般來說,如果指針變量 pointer已指向結(jié)構(gòu)體變量var,則以下三種形式等價(jià) ,都可以訪問結(jié)構(gòu)體變量的成員: ? ① ? ② pointer成員 ? ③ (*pointer).成員 /* “*pointer”外面的括號(hào)不能?。?*/ ? 注意:在格式①中,分量運(yùn)算符左側(cè)的運(yùn)算對(duì)象,只能是結(jié)構(gòu)體變量;而在格式②中,指向運(yùn)算符左側(cè)的運(yùn)算對(duì)象,只能是指向結(jié)構(gòu)體變量(或結(jié)構(gòu)體數(shù)組)的指針變量,否則都出錯(cuò);格式③和格式①相似,只是通過指針進(jìn)行了一次轉(zhuǎn)換。如: ? struct student ? { long int nnum。 ? char name[20]。 ? char sex。 ? float score。 ? }。 ? struct student stu1。 /*定義結(jié)構(gòu)體變量 stu1*/ ? struct student *p。 /*定義結(jié)構(gòu)體指針 p*/ ? p = amp。stu1。 /*建立結(jié)構(gòu)體指針和變量的指向關(guān)系 */ ? 這樣,結(jié)構(gòu)體指針 p就可以通過指向運(yùn)算符“- ”引用結(jié)構(gòu)體中的成員了。如: ? pnum ? pname ? psex ? pscore ? 例 使用指向結(jié)構(gòu)變量的指針來訪問結(jié)構(gòu)變量的各個(gè)成員。 ? struct stu_inf student={000102,張三 ,男 ,{1980,9,20}}。 ? main() ? {struct stu_inf *p_stu=amp。student。 ? printf(No: %s\n, p_stuno)。 ? printf(Name: %s\n, p_stuname)。 ? printf(Sex: %s\n, p_stusex)。 ? printf(Birthday: %d%d%d\n, p_stu, ? p_stu, p_stu)。 ? } ? 6. 指向結(jié)構(gòu)體數(shù)組的指針 ? 前面已經(jīng)介紹過,可以使用指向數(shù)組或數(shù)組元素的指針和指針變量。同樣地對(duì)結(jié)構(gòu)體數(shù)組及其元素也可以用指針或指針變量來指向并訪問。 ? 例 使用指向結(jié)構(gòu)體數(shù)組的指針來訪問結(jié)構(gòu)體數(shù)組,輸出所有學(xué)生的信息。 ? struct stu_inf student[3]={{000102,張三 ,男 ,{1980,5,20}}, ? {000105,李四 ,男 ,{1980,8,15}}, ? {000112,王五 ,女 ,{1980,3,10}}}。 ? main() ? { ? struct stu_inf *p=student。/*使 p指向結(jié)構(gòu)體數(shù)組 student*/ ? int i=0。 ? /*打印表頭 */ ? printf(No. Name Sex Birthday\n)。 ? /*輸出結(jié)構(gòu)體數(shù)組的內(nèi)容 */ ? for ( 。 i3。 i++, p++) ? {printf(%7s%9s%4s,pno,pname,psex)。 ? printf(%4d%2d%2d\n,p, ? p,p)。 ? } ? } ? 注意: ? 如果指針變量 p已指向某結(jié)構(gòu)體數(shù)組,則 p+1指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素,而不是指向當(dāng)前元素的下一個(gè)成員,所以上例中每次循環(huán)結(jié)束后進(jìn)行 p++操作,即讓指針指向下一個(gè)數(shù)組元素。另外,如果指針變量 p已經(jīng)指向一個(gè)結(jié)構(gòu)體變量(或結(jié)構(gòu)體數(shù)組),就不能再使之指向結(jié)構(gòu)體變量(或結(jié)構(gòu)體數(shù)組元素)的某一成員,如以下用法是錯(cuò)誤的: ? p=amp。student[1].name。 ? 7. 用結(jié)構(gòu)體指針作函數(shù)的參數(shù) ? 用函數(shù)處理結(jié)構(gòu)體類型的數(shù)據(jù)時(shí),將一個(gè)結(jié)構(gòu)體變量的值傳遞給函數(shù)有以下三種方法: ? ( 1)用結(jié)構(gòu)體變量的成員作參數(shù),與普通變量作函數(shù)參數(shù)的用法相同。屬于值傳遞,函數(shù)中不能修改實(shí)參的值。 ? ( 2)用結(jié)構(gòu)體變量作實(shí)參。此時(shí),形參必須是同類型的結(jié)構(gòu)體變量,原理是將實(shí)參結(jié)構(gòu)體變量所占內(nèi)存空間的內(nèi)容全部按順序傳遞給形參,函數(shù)中不能修改實(shí)參的值。但這種方法很少使用,因?yàn)檫@種傳遞方式在空間和時(shí)間上的開銷都很大。 ? ( 3)用指向結(jié)構(gòu)體變量(或數(shù)組)的指針作實(shí)參,將結(jié)構(gòu)體變量(數(shù)組)的地址傳給形參,形參是結(jié)構(gòu)體類型的指針。函數(shù)中,通過形參可以操作實(shí)參地址中的結(jié)構(gòu)體變量(或數(shù)組),效率高,可以修改實(shí)參的值。 ? 例 用函數(shù)調(diào)用方式,改寫例 ,編寫一個(gè)輸出函數(shù) display(),通過主函數(shù)調(diào)用來實(shí)現(xiàn)學(xué)生信息的輸出。 ? /*定義并初始化一個(gè)全局結(jié)構(gòu)體數(shù)組 student */ ? struct stu_inf student[3]={{000102,張三 ,男 ,{1980,5,20}}, ? {000105,李四 ,男 ,{1980,8,15}}, ? {“000112”,“王五” ,“女” ,{1980,3,10}}}。 ? main() ? {void display()。 /*函數(shù)聲明 */ ? int i=0。 ? /*打印表頭 */ ? printf(No. Name Sex Birthday\n)。 ? /*打印內(nèi)容 */ ? for( 。 i3。 i++) ? {display(student + i )。/*實(shí)參為結(jié)構(gòu)體數(shù)組第 i個(gè)元素的地址 */ ? printf(\n)。 ? } ? } ? void display(struct stu_inf *p) /*形參為結(jié)構(gòu)體類型的指針 */ ? {printf(%7s%9s%4s,pno,pname,psex)。 ? printf(%4d%2d%2d\n,p, ? p,p)。 ? } ? 共用體 ? 使幾個(gè)不同的變量占用同一段內(nèi)存空間的結(jié)構(gòu)稱為共用體。例如,把一個(gè)整型變量、一個(gè)字符型變量、一個(gè)實(shí)型變量放在同一個(gè)地址開始的內(nèi)存單元中。以上三個(gè)變量在內(nèi)存中所占的字節(jié)數(shù)不同,但都從同一地址開始存放數(shù)據(jù)。 ? ( 1)共用體類型的定義 ? 共用體類型的定義與結(jié)構(gòu)體類型的定義形式類似,一般格式如下: ? union 共用體類型名 ? {成員列表 。}。 ? 例如: ? union data ? { int i。 ? char ch。 ? float f。 ? }。 ? 定義一個(gè)共用體結(jié)構(gòu)類型 data,它包含三個(gè)成員:整型變量 i,字符型變量 ch和實(shí)型變量 f。這三個(gè)成員變量在內(nèi)存中占用同一地址開始的空間,但是 i占用從該地址開始的 2個(gè)字節(jié)單元, ch占用從該地址開始的 1個(gè)字節(jié)單元, f占用從該字節(jié)開始的 4個(gè)字節(jié)單元。 ? 注意:“共用體”各成員在內(nèi)存中占相同的起始地址,所占內(nèi)存長度等于最長的成員所占內(nèi)存。“結(jié)構(gòu)體”各成員在內(nèi)存中占不同的地址,所占內(nèi)存長度等于全部成員所占內(nèi)存之和。和“結(jié)構(gòu)體”的定義一樣,“共用體”的定義只是定義了一種新的數(shù)據(jù)類型,不是變量的定義,因此,定義一個(gè)共用體時(shí),是不分配內(nèi)存空間的。共用體定義后,通常都會(huì)定義此種數(shù)據(jù)類型的變量。 ? ( 2)共用體類型變量的定義和引用 ? 與結(jié)構(gòu)體變量的定義類似,共用體變量的定義有直接定義和間接定義兩種方法。如: ? union data ? { int i。 ? char ch。 ? float f。 ? }。 ? union data un1,un2,un3; ? 以上為共用體變量的間接定義,即定義了共用體后,再利用該共用體定義 un un2和 un3三個(gè)共用體變量。而 ? union data union ? {int i。 {int i。 ? char ch。 和 char ch。 ? float f。 float f。 ? }un1, un2, un3。 ? }un1, un2, un3。 ? 屬于共用體變量的直接定義,即定義共用體類型的同時(shí)定義該類型的變量。 ? 通過以上定義后,系統(tǒng)就會(huì)為共用體變量 un un2和 un3分配存儲(chǔ)空間,此時(shí),這三個(gè)變量所占的內(nèi)存空間都是 4字節(jié),而不是 2+1+4=7字節(jié)。這點(diǎn)請(qǐng)務(wù)必注意。 ? 定義了共用體變量后,就可以在程序中引用它了。與結(jié)構(gòu)體變量一樣,不能對(duì)共用體變量進(jìn)行整體引用,而應(yīng)該逐個(gè)引用其成員。例如,對(duì)上面定義的共用體變量 un1,下面的引用方式是正確的: ? (引用共用體變量 un1中的成員 i) ? (引用共用體變量 un1中的成員 ch) ? (引用共用體變量 un1中的成員 f) ? 而 ? printf(%d, un1)。 ? 是錯(cuò)誤的。因?yàn)?un1包含三個(gè)成員,而且每個(gè)成員的類型不同,所占存儲(chǔ)區(qū)長度不同,系統(tǒng)無法確定究竟輸出哪一個(gè)成員的值。應(yīng)該改寫成: ? printf(%d, )。 ? ( 3)共用體類型數(shù)據(jù)的特點(diǎn) ? 要正確運(yùn)用共用體進(jìn)行程序設(shè)計(jì),必須了解共用體類型數(shù)據(jù)的以下幾個(gè)特點(diǎn): ? ① 系統(tǒng)采用覆蓋技術(shù),實(shí)現(xiàn)共用體變量各成員的內(nèi)存共享,所以在某一時(shí)刻,存放和起作用的是最后一次存入的成員值。例如,執(zhí)行 =1。 =39。c39。 =。后, 。 ? ② 由于所有成員共享同一內(nèi)存空間,故共用體變量與其各成員的地址相同。如& un1=& =& =& 。 ? ③ 不能對(duì)共用體變量名賦值以及企圖引用變量名來得到一個(gè)值,也不能在定義時(shí)對(duì)共用體變量進(jìn)行初始化(注意:結(jié)構(gòu)體變量可以初始化)。例如,以下這些操作都是錯(cuò)誤的: ? union ? { int i。 ? char ch。 ? float f。 ? }un1={5, 39。s39。,}。/*不能進(jìn)行初始化 */ ? un1=1。 /*不能對(duì)共用體變量名賦值 */ ? x=un1。 /*不能引用共用體變量名來得到一個(gè)值 */ ? ④ 不能將共用體變量作為函數(shù)參數(shù)以及使函數(shù)返回一個(gè)共用體數(shù)據(jù),但可以使用指向共用體變量的指針(與結(jié)構(gòu)體變量類似)。 ? ⑤ 共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體數(shù)組。反之,結(jié)構(gòu)體也可以出現(xiàn)在共用體類型定義中,數(shù)組也可以作為共用體的成員。 ? 例 設(shè)有若干個(gè)人員的數(shù)據(jù),其中有學(xué)生和教師。學(xué)生數(shù)據(jù)包括:姓名、編號(hào)、性別、職業(yè)、班級(jí)。教師數(shù)據(jù)包括:姓名、編號(hào)、性別、職業(yè)、職務(wù)。如表 : 表 name num sex job Class(班級(jí) ) Position(職務(wù) ) Li 1011 f s 501 Wang 2085 M t prof ? 要求輸入人員數(shù)據(jù),然后輸出。 ? 分析:學(xué)生數(shù)據(jù)的 class(班級(jí))和教師數(shù)據(jù)的 position(職務(wù))類型不同,但在同一表格中,因此應(yīng)該使用“共用體”數(shù)據(jù)結(jié)構(gòu)。 ? struct ? { char name[10]。 ? int num。 ? char sex。 ? char job。 ? union ? { int class。 /* 班級(jí) */ ? char position[10]。 /* 職務(wù) */ ? }category。 ? }person[2]。 /* 2個(gè)人員數(shù)據(jù) */ ? main() ? { int i。 ? for(i=0。i2。i++) /* 輸入 2個(gè)人員的數(shù)據(jù) */ ? { scanf(%d,%
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1