北京 理工大學 C語言 程序設計 第十章結構聯合與枚舉類型2_第1頁
北京 理工大學 C語言 程序設計 第十章結構聯合與枚舉類型2_第2頁
北京 理工大學 C語言 程序設計 第十章結構聯合與枚舉類型2_第3頁
北京 理工大學 C語言 程序設計 第十章結構聯合與枚舉類型2_第4頁
北京 理工大學 C語言 程序設計 第十章結構聯合與枚舉類型2_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

結構與函數的關系: 向結構中傳遞函數的成員; 在函數之間傳遞整個結構; 向函數傳遞結構的地址〔指針〕。向函數中傳遞結構的成員 在函數中傳遞結構成員的方法與傳遞簡單變量的方法相同:在函數之間傳遞成員的值;在函數之間傳遞成員的地址。一、結構、結構指針作為函數的參數第四節在函數之間傳遞結構實例 printf(“%d〞,man.birthday.year);傳遞成員的值scanf(“%d〞,&man.birthday.year);傳遞成員的地址 gets();傳遞結構成員的地址第四節在函數之間傳遞結構在函數之間傳遞整個結構

將結構作為整體,在函數之間傳遞:將結構變量作為形參;函數的返回值為一個結構類型。第四節在函數之間傳遞結構例:利用結構變量求解兩個復數之積。①、(3+4i)×(5+6i)②、(10+20i)×(30+40i)structcomplx{ intreal;/*real為復數的實部*/ intim;/*im為復數的虛部*/};structcomplx

cmult(za,zb)/*函數返回值為結構類型*/structcomplx

za,zb; /*形式參數為結構類型*/{ structcomplx

w; w.real=za.real*zb.real-za.im*zb.im; w.im=za.real*zb.im+za.im*zb.real; return(w); /*返回計算結果,返回值的類型為結構*/} 例C10_401第四節在函數之間傳遞結構向函數傳遞結構的地址

向函數中傳遞結構的地址要將函數的形參定義為指向結構的指針, 在調用時要用結構的地址作為實參。例:輸入10本書的名稱和單價,按照單價排序。 程序中使用插入排序算法。第四節在函數之間傳遞結構插入排序的根本思想是:在數組中,有N個已經從小到大已經排好序的元素,要參加1個新的元素時,可以從數組的第1個元素開始,依次與新元素進行比較。當數組中首次出現第i個元素的值大于新元素時,那么新元素就應當插在原來數組中的第i-1個元素與第i個元素之間。 此時可以將數組中第i個元素之后〔包括第i個元素〕的所有元素向后移動1個位置,將新元素插入,使它成為第i個元素。這樣就可以得到已經排好序的N+1個元素。第四節在函數之間傳遞結構5552367911

555555555555222555535555555597611插入排序法例如第四節在函數之間傳遞結構#defineNUM10structbook /*定義結構book*/{ charname[20]; /*書名*/ floatprice; /*單價*/};main(){ structbookterm,books[NUM]; intcount; /*數組books的元素計數器*/ for(count=0;count<NUM;){printf(“EnterNameandPrice.book%d=",count+1);scanf(“%s%f〞,,&term.price);sortbook(term,books,count++);/*傳遞結構變量term和結構數組book數組的首地址〕*/ } printf("--------BOOKLIST---------\n"); for(count=0;count<NUM;count++) printbook(&books[count]); /*傳遞數組中1個元素的地址*/}第四節在函數之間傳遞結構sortbook(term,

pbook,count)structbook

term; /*形參:結構變量term*/structbook

*pbook;/*指向結構數組首元素的指針pbook*/intcount;

/*數組中已存入count個有序元素*/{ inti;

structbook*q,*pend

=pbook;

for(i=0;i<count;i++,pend++); for(;pbook<pend;pbook++) if(pbook->price>term.price)

break;

for(q=pend-1;q>=pbook;q--) *(q+1)=*q; *pbook=term;

/*在pbook處插入新元素term*/}第四節在函數之間傳遞結構printbook(pbook)structbook*pbook;{ printf("%-20s%6.2f\n",

pbook->name,pbook->price);}例C10_402第四節在函數之間傳遞結構定義結構變量stu:struct

student{intnum; floatscore;charsex;}stu;結構變量stu占用內存情況

numscoresex2個字節4個字節1個字節sizeof(stu)是7。第五節聯合類型union定義聯合變量stu:student{intnum; floatscore;charsex;}stu;聯合變量stu占用內存情況

4個字節

2個字節

1個字節unionunionunion聯合變量占用空間的大小等于成員分量中最長的成員占用內存的長度。4個字節第五節聯合類型0x780x560x340x12union{longi;intk;charc;}mix;mix.i=0x12345678;printf(“%x\n〞,mix.i);printf(“%x\n〞,mix.k);printf(“%x\n〞,mix.c);ffe0ffe1ffe2ffe3高地址低地址1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

第五節聯合類型

mix.c=‘A’;1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

123456

4

1

00010010001101000101011001000001低高ffe3ffe2

ffe1

ffe0

printf(“%ld\n〞,mix.i);printf(“%d\n〞,mix.k);printf(“%c\n〞,mix.c);30541984122081A例C10_501第五節聯合類型枚舉類型的特點:數據的取值是有限個數的數據類型。定義枚舉類型的格式

enum

枚舉類型名{可能的取值表};例如:

enumweekday{sun,mon,tue,wed,thu,fri,dat};說明枚舉類型變量的格式

enum枚舉類型名變量標識符;第六節枚舉類型用戶自定義類型 標準類型〔如int、char、float等〕:系統已經定義好的類型,用戶可以直接使用,無須再進行定義。 用戶自定義類型:用戶根據自己的實際要求,自己定義的新的數據類型。除結構和聯合等類型之外,還可以用類型說明語句typ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論