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

正文內(nèi)容

c程序設計實踐教程(中)ppt-資料下載頁

2024-10-17 00:27本頁面
  

【正文】 }。 說明 – 結構體類型名用標識符表示。 – 成員可以是基本類型或?qū)С鲱愋偷淖兞?,不能指定存儲類型?auto、 register、 extern,但可指定存儲類型為 static。 – 定義結構體類型用分號 “ ?!?表示結束。 – 結構體類型是一個存儲模型,本身不占內(nèi)存,僅當定義其變量時,系統(tǒng)才按此存儲模型為其變量分配相應的內(nèi)存。 結構體類型變量的定義 ? 定義結構體類型變量的格式為: 結構體類型名 變量列表 。 或 struct 結構體類型名 變量列表 。 其中,結構體類型名為已定義的類型;多個變量之間用逗號分隔;后一種格式與 C兼容。 ? 例如: student s1,s2,s3[10]。 或 struct student s1,s2,s3[10]。 student類型變量 s1的內(nèi)存分配圖 … ?按 student類型的存儲模型為其變量 s1分配內(nèi)存。 ?student類型的存儲模型所需內(nèi)存字節(jié)數(shù): sizeof(student) ?s1變量各成員在內(nèi)存中的順序與其類型中成員說明的順序一致。 name 占 20字節(jié) age 占 4字節(jié) score 占 4字節(jié) 結構體類型變量定義的其他形式 ? 結構體類型變量也可在聲明結構體類型的同時定義。 ? 例如: struct Date{ int year,month,day。 }today,yesterday。 ? 再如: struct{ //定義一個無名結構類型 int a。 float b。 }x,y。 無名結構體類型不能在該類型定義之外定義其變量。 結構體類型變量的初始化 ? 結構體變量的初始化:與數(shù)組的初始化方式類似,在花括號中,按結構體成員說明的順序依次列出其值。 ? 例如: student s1={Jenny,20,98}。 Date today={2021,1,2}。 struct Complex{ float real,image。 }c1={,},c2。 結構體類型變量的使用 ? 訪問結構體變量成員的格式為: 結構體變量 .成員名 其中 “ .” 是成員訪問運算符。例如: 表示訪問結構體變量 today的成員 year。 ? 相同結構體類型的變量之間可直接賦值。例如: struct weather{ double temp,wind。 }w1={,},w2=w1。 其中 “ w2=w1。”等同于: =。 =。 ? 結構體類型變量不能直接輸入 /輸出,其成員能否直接輸入 /輸出,取決于其成員的類型,若是基本類型或字符數(shù)組,則可直接輸入 /輸出。如: cins1。 //錯誤 cinscore。 //正確 couts1。 //錯誤 coutscore。//正確 ? 結構體類型變量做函數(shù)的形參時,調(diào)用函數(shù)的實參必須是相同結構體類型的變量。參數(shù)的傳遞方式為值傳遞,系統(tǒng)將實參的每個成員逐個拷貝給對應的形參成員。結構體類型變量也可做函數(shù)的返回值。 ? 例 編寫求兩分數(shù)之和的函數(shù),并用它求 1/8+5/24。 include struct Fraction{ int num,den。 //分別為分數(shù)的分子和分母 }。 int gcd(int m,int n)//求 m和 n的最大公約數(shù) { int t。 if(mn){ t=m。m=n。n=t。 } while(t=m%n){ m=n。n=t。 } return n。 } Fraction add(Fraction x, Fraction y)//求分數(shù)和 { Fraction z。 =*+*。//求分子 =*。 //求分母 int a=gcd(,)。 。 。 //約分化簡 return z。 } void main() { Fraction x={1,8},y={5,24},z。 z=add(x,y)。 //調(diào)用函數(shù)求分數(shù)之和 coutx+y=?/?endl。 } ? 例 電視臺舉報青年歌手大獎賽,請輸入每位選手的姓名、編號及演唱得分、綜合素質(zhì)得分、新歌得分(演唱新歌加 ),計算每人的總分,然后輸出每人的全部信息。 include struct Singer{//定義結構體類型,描述青年歌手 char name[10]。 //姓名 char no[8]。 //編號 float singScore, //演唱得分 diaScore, //綜合素質(zhì)得分 newScore。 //新歌得分 float sum。 //總分 }。 const int n=3。 //參賽青年歌手人數(shù) void main() { Singer s[n]。 //定義結構體數(shù)組 for(int i=0。in。i++){ cout輸入第 i+1 “位選手的姓名、編號和三項得分: ” 。 cins[i].names[i].nos[i].singScore s[i].diaScores[i].newScore。 s[i].sum=s[i].singScore+s[i].diaScore +s[i].newScore。 //求總分 } for(i=0。in。i++) couts[i].name39。\t39。s[i].no39。\t39。 s[i].singScore39。\t39。s[i].diaScore39。\t39。 s[i].newScore39。\t39。s[i].sumendl。 } 位域 * ? 內(nèi)存浪費現(xiàn)象比比皆是。例如: – 人的性別只需 1個二進制位就可精確表示,但通常用字符型或字符型數(shù)組表示。 – 人的年齡只需 7個二進制位就可精確表示,但通常用整型變量表示。 ? 針對上述情況,如何節(jié)約使用內(nèi)存? ? 位域:結構體中 指定了存儲位數(shù)的成員稱為位域 。 使用位域可解決上述問題。 ? 位域類型: 含有位域的結構體類型 。 定義位域類型 ? 格式為: struct 位域類型名 { 類型名 位域名 1 :二進制位數(shù) 。 //定義位域 類型名 位域名 2 :二進制位數(shù) 。 //定義位域 …… //定義其它成員 }。 其中,位域類型名用標識符表示,類型名只能是整型和字符型,二進制位數(shù)必須是大于或等于 0的整數(shù)。 ? 例如: struct data{ unsigned short flaga:1。 //取值 0或 1 unsigned short flagb:3。 //取值 0~ 7 unsigned short flagc:4。 //取值 0~ 15 short flagd:4。 //取值 8~ 7 }f1。 位域類型 data的變量 f1的內(nèi)存分配圖 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 注:同一字中位域的分配方向因系統(tǒng)而異,可能從右到左,也可能從左到右。 VC++從右到左。 ? 若要跳過幾個二進位,可定義無名位域。若無名位域的位數(shù)為 0,則表示下一位域從新單元開始。如: struct PackedData{ unsigned flaga:4。 unsigned:2。 //跳過 2個二進位,預留 unsigned:0。 //下一位域從新單元開始 unsigned flagd:7。 }。 flagd位域從下一個 unsigned存儲單元開始存儲。 這樣 PackedData類型需要 2個 unsigned存儲單元。 位域類型變量的定義、初始化和使用 ? 位域類型變量的定義、初始化和用法與結構體類型變量相同。例如: data f2={0,4,10,1}。 =12。 ? 注意:位域賦值時,若所賦數(shù)值超出位域的表示范圍,則取其低位數(shù)字。例如: =10。 因 10已超出 flagb位域 0~ 7的表示范圍,故賦給 flagb位域的是 10的二進制表示的低三位: 10的二進制為 1 0 1 0 即 2。 ? 位域變量節(jié)省內(nèi)存,但存取費時。使用時注意權衡。 ? 例 用位域來存放學生的信息。 include const int num=2。 struct student{ char name[10]。 //姓名:非位域成員 unsigned short sex:1。 //性別:位域成員 unsigned short age:7。 //年齡:位域成員 unsigned short score:7。//成績:位域成員 }。 void main() { coutsizeof(student)=sizeof(student)endl。 student s[num]={{Tonny,1,19,98},{Jenny,0,18,85}}。 for(int i=0。inum。i++) couts[i].name39。,39。s[i].sex39。,39。 s[i].age39。,39。s[i].scoreendl。 } 共用體的定義及應用 ? 有時希望多個變量共用同一塊內(nèi)存,可通過定義共用體類型的變量來實現(xiàn)。 ? 共用體類型的定義格式: union 共用體類型名 { 數(shù)據(jù)類型 成員名 1。 數(shù)據(jù)類型 成員名 2。 …… }。 ?在定義和使用形式上,共用體與結構體相似:由多個成員組成,成員的類型可以不同。 ?在內(nèi)存分配上,共用體與結構體有本質(zhì)區(qū)別:結構體的每個成員都有自己的獨占內(nèi)存;而共用體的每個成員共用同一塊內(nèi)存。 ?共同體存儲區(qū)域的大小由占用最大存儲區(qū)的成員決定。 ? 例如: union udata{ char c。 int i。 double d。 }。 ? 共用體類型定義后,即可定義其變量、數(shù)組、指針和引用等。例如: udata u1, //變量 u1實際占用 8字節(jié)內(nèi)存 u2[10], *p=u2。 ? 對共用體變量的操作與結構體變量類似。例如: =39。a39。 =25。 =。 注意,當對變量 u1的成員 i賦值時,覆蓋了成員 c的值;類似的當對成員 d賦值時,又覆蓋了成員 i的值。同一時刻,只可使用其中的一個成員。 ? 共用體可做函數(shù)的參數(shù)和返回值。 ? 應用舉例:學生體能測試,男生測 100米,女生測跳繩。要求輸入學生的體能測試數(shù)據(jù)并輸出。 includeiostream using namespace std。 struct student{ char sex。 //性別: 39。m39。為男生, 39。f39。為女生 union{ float run。 //百米成績 int rope。 //跳繩成績 }score。 }。 void input(student s[],int n) { for(int i=0。in。i++){ cout輸入學生性別: 。 cins[i].sex。 if(s[i].
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1