山東大學(xué)飛思卡爾單片機教學(xué)補充(自己看)_C語言基礎(chǔ)_第1頁
山東大學(xué)飛思卡爾單片機教學(xué)補充(自己看)_C語言基礎(chǔ)_第2頁
山東大學(xué)飛思卡爾單片機教學(xué)補充(自己看)_C語言基礎(chǔ)_第3頁
山東大學(xué)飛思卡爾單片機教學(xué)補充(自己看)_C語言基礎(chǔ)_第4頁
山東大學(xué)飛思卡爾單片機教學(xué)補充(自己看)_C語言基礎(chǔ)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C C語言程序設(shè)計基礎(chǔ)語言程序設(shè)計基礎(chǔ) 數(shù)據(jù)類型數(shù)據(jù)類型 1 1基本數(shù)據(jù)類型基本數(shù)據(jù)類型 基本數(shù)據(jù)類型不可以再分解為其它類型基本數(shù)據(jù)類型不可以再分解為其它類型: :intint 整型整型; ; char char 字符型字符型; ; float float 單精度浮點型單精度浮點型; ; double double 雙精度浮點型雙精度浮點型。 2 2構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型 數(shù)組數(shù)組類型類型 結(jié)構(gòu)結(jié)構(gòu)類型類型 聯(lián)合聯(lián)合類型類型 3 3指針類型指針類型 用來表示某個量在用來表示某個量在內(nèi)存中的地址內(nèi)存中的地址。 4 4空類型空類型 調(diào)用后不需要向調(diào)用者返回值的函數(shù)調(diào)用后不需要向調(diào)用者返回值的函數(shù)

2、為為“空類型空類型”。其類型說明符為。其類型說明符為voidvoid。 基本運算符和表達式基本運算符和表達式 1 1運算符的種類運算符的種類 豐富的運算符和表達式使豐富的運算符和表達式使C C語言功能十分完善。這也是其主要特語言功能十分完善。這也是其主要特點之一。點之一。 C C語言的運算符不僅具有不同的優(yōu)先級,而且還具有結(jié)合性。在語言的運算符不僅具有不同的優(yōu)先級,而且還具有結(jié)合性。在表達式中,各運算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別表達式中,各運算量參與運算的先后順序不僅要遵守運算符優(yōu)先級別的規(guī)定,還要受運算符結(jié)合性的制約,以便確定是自左向右進行運算的規(guī)定,還要受運算符結(jié)合性的制約

3、,以便確定是自左向右進行運算還是自右向左進行運算。還是自右向左進行運算。C C語言的運算符可分為以下幾類:語言的運算符可分為以下幾類: 算術(shù)運算符算術(shù)運算符:用于各類數(shù)值運算。包括加(:用于各類數(shù)值運算。包括加(+ +)、減()、減(- -)、乘)、乘()、除()、除(/ /)、求余(或稱模運算,)、求余(或稱模運算,% %)、自增()、自增(+)、自減()、自減(-)共七種。共七種。 關(guān)系運算符關(guān)系運算符:用于比較運算。包括大于(:用于比較運算。包括大于( )、小于()、小于( =)、小于等于()、小于等于(=)和不等于()和不等于(!=!=)六種。)六種。 邏輯運算符邏輯運算符:用于邏輯運

4、算。包括與(:用于邏輯運算。包括與(&)、或()、或(|)、非()、非(! !)三種。三種。 位操作運算符位操作運算符:參與運算的量,按二進制位進行運算。包括位與:參與運算的量,按二進制位進行運算。包括位與(& &)、位或()、位或(| |)、位非()、位非( )、位異或()、位異或( )、左移()、左移()六種。)六種。 賦值運算符賦值運算符:用于賦值運算,分為簡單賦值(:用于賦值運算,分為簡單賦值(= =)、復(fù)合算術(shù)賦值)、復(fù)合算術(shù)賦值(+=+=,-=-=,* *= =,/=/=,%=%=)和復(fù)合位運算賦值()和復(fù)合位運算賦值(&=&=,|=|=,=,=,=)三類共十一種。三類共十一種。

5、條件運算符條件運算符:這是一個三目運算符,用于條件求值(:這是一個三目運算符,用于條件求值(?:?:)。)。 逗號運算符逗號運算符:用于把若干表達式組合成一個表達式(,)。:用于把若干表達式組合成一個表達式(,)。 指針運算符指針運算符:用于取內(nèi)容(:用于取內(nèi)容(* *)和取地址()和取地址(& &)二種運算。)二種運算。 求字節(jié)數(shù)運算符求字節(jié)數(shù)運算符:用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(:用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeofsizeof)。)。 特殊運算符特殊運算符:有括號:有括號( )( ),下標,下標 ,成員,成員(,.).)等幾種。等幾種。2. 2. 優(yōu)先級和結(jié)合性優(yōu)先級和結(jié)合性 C

6、C語言中,運算符的語言中,運算符的運算優(yōu)先級共分為運算優(yōu)先級共分為1515級級。1 1級最高,級最高,1515級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級相同時,進行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級相同時, 則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。 C C語言中各語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運算符的結(jié)合性是自左至結(jié)合性(自右至左)。例如算術(shù)運算符的結(jié)

7、合性是自左至右,即先左后右。如表達式右,即先左后右。如表達式x-y+zx-y+z,則則y y應(yīng)先與應(yīng)先與“-”“-”號結(jié)合,號結(jié)合, 執(zhí)行執(zhí)行x-yx-y運算,然后再執(zhí)行運算,然后再執(zhí)行+ +z z的運算。這種自左至右的結(jié)合的運算。這種自左至右的結(jié)合方向就稱為方向就稱為“左結(jié)合性左結(jié)合性”。而自右至左的結(jié)合方向稱為。而自右至左的結(jié)合方向稱為“右結(jié)合性右結(jié)合性”。 最典型的右結(jié)合性運算符是賦值運算符。最典型的右結(jié)合性運算符是賦值運算符。如如x=y=z,x=y=z,由于由于“=”“=”的右結(jié)合性,應(yīng)先執(zhí)行的右結(jié)合性,應(yīng)先執(zhí)行y=zy=z再執(zhí)行再執(zhí)行x=(y=z)x=(y=z)運算。運算。 3. 3

8、. 算術(shù)運算符和算術(shù)表達式中基本的算術(shù)運算符算術(shù)運算符和算術(shù)表達式中基本的算術(shù)運算符 加法運算符加法運算符“+”“+”:加法運算符為雙目運算符,即應(yīng)有:加法運算符為雙目運算符,即應(yīng)有兩個量參與加法運算。如兩個量參與加法運算。如a+b,4+8a+b,4+8等。具有右結(jié)合性。等。具有右結(jié)合性。 減法運算符減法運算符“-”“-”:減法運算符為雙目運算符。但:減法運算符為雙目運算符。但“-”“-”也可作負值運算符,此時為單目運算,如也可作負值運算符,此時為單目運算,如- -x x,-5-5等具有左結(jié)等具有左結(jié)合性。合性。 乘法運算符乘法運算符“* *”:雙目運算,具有左結(jié)合性。:雙目運算,具有左結(jié)合性

9、。 除法運算符除法運算符“/”“/”:雙目運算具有左結(jié)合性。參與運算:雙目運算具有左結(jié)合性。參與運算量均為整型時,結(jié)果也為整型,舍去小數(shù)。如果運算量中有量均為整型時,結(jié)果也為整型,舍去小數(shù)。如果運算量中有一個是實型,則結(jié)果為雙精度實型。一個是實型,則結(jié)果為雙精度實型。 求余運算符(模運算符)求余運算符(模運算符)“%”“%”:雙目運算,具有左結(jié):雙目運算,具有左結(jié)合性。要求參與運算的量均為整型。合性。要求參與運算的量均為整型。 求余運算的結(jié)果等于求余運算的結(jié)果等于兩數(shù)相除后的余數(shù)。兩數(shù)相除后的余數(shù)。 4. 4. 自增,自減運算符自增,自減運算符 自增自增1 1運算符記為運算符記為“+”“+”,

10、其功能是使變量的值自增,其功能是使變量的值自增1 1。自減自減1 1運算符記為運算符記為“-”“-”,其功能是使變量值自減,其功能是使變量值自減1 1。自增。自增1 1,自減,自減1 1運算符均為單目運算,都具有右結(jié)合性??捎幸赃\算符均為單目運算,都具有右結(jié)合性??捎幸韵聨追N形式:下幾種形式: +i i:i i自增自增1 1后再參與其它運算。后再參與其它運算。 - -i i:i i自減自減1 1后再參與其它運算。后再參與其它運算。 i i+:i i參與運算后,參與運算后,i i的值再自增的值再自增1 1。 i- i-:i i參與運算后,參與運算后,i i的值再自減的值再自減1 1。5. 5.

11、算術(shù)表達式算術(shù)表達式 算術(shù)表達式是由算術(shù)運算符和括號連接起來的算術(shù)表達式是由算術(shù)運算符和括號連接起來的式子,以下是算術(shù)表達式的例子:式子,以下是算術(shù)表達式的例子: a+b a+b,(a(a* *2)2)c c,(x+r)(x+r)* *8-(a+b)8-(a+b)7 7,+i+i,sin(x)+sin(y)sin(x)+sin(y),(+i)-(j+)+(k-)(+i)-(j+)+(k-)。 6. 6. 賦值運算符和賦值表達式賦值運算符和賦值表達式 簡單賦值運算符和表達式,簡單賦值運算符記為簡單賦值運算符和表達式,簡單賦值運算符記為“=”“=”。由。由“= ”“= ”連接的式子稱為賦值表達式。

12、其一般形式為:變量連接的式子稱為賦值表達式。其一般形式為:變量= =表達式。表達式。例如:例如: x=a+b x=a+b w=sin(a)+sin(b) w=sin(a)+sin(b) 如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動進行類型轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。具體規(guī)定如下:轉(zhuǎn)換,即把賦值號右邊的類型換成左邊的類型。具體規(guī)定如下: 實型賦予整型,舍去小數(shù)部分。整型賦予實型,數(shù)值不變,但實型賦予整型,舍去小數(shù)部分。整型賦予實型,數(shù)值不變,但將以浮點形式存放,即增加小數(shù)部分將以浮點形式存放,即增加小數(shù)部分( (小數(shù)部分的值為

13、小數(shù)部分的值為0)0)。 字符型賦予整型,由于字符型為一個字節(jié),而整型為二個字節(jié),字符型賦予整型,由于字符型為一個字節(jié),而整型為二個字節(jié),故將字符的故將字符的ASCIIASCII碼值放到整型量的低八位中,高八位為碼值放到整型量的低八位中,高八位為0 0。 整型賦予字符型,僅把低八位賦予字符量。整型賦予字符型,僅把低八位賦予字符量。7. 7. 復(fù)合賦值符及表達式復(fù)合賦值符及表達式 在賦值符在賦值符“=”“=”之前加上其它二目運算符可構(gòu)成之前加上其它二目運算符可構(gòu)成復(fù)合復(fù)合賦值符賦值符。如:。如: += +=,-=-=,* *= =,= =,%=%=,=,&=&=,=,|=|= 構(gòu)成復(fù)合賦值表達式

14、的一般形式為:構(gòu)成復(fù)合賦值表達式的一般形式為: 變量變量 雙目運算符雙目運算符= =表達式表達式 它等效于:它等效于: 變量變量= =變量變量 運算符運算符 表達式表達式 例如:例如:a+=5a+=5等價于等價于a=a+5a=a+5,x x* *=y+7=y+7等價于等價于x=xx=x* *(y+7)(y+7),r%=p r%=p 等價于等價于r=r%pr=r%p等。復(fù)合賦值符這種寫法,對初學(xué)者等。復(fù)合賦值符這種寫法,對初學(xué)者可能不習(xí)慣,可能不習(xí)慣, 但十分有利于編譯處理,能提高編譯效率但十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標代碼。并產(chǎn)生質(zhì)量較高的目標代碼。8. 8. 逗號運算

15、符逗號運算符 C C語言中逗號語言中逗號“,”也是一種運算符,稱為逗號運也是一種運算符,稱為逗號運算符。其功能是把兩個表達式連接起來組成一個表達式,算符。其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。其一般形式為:稱為逗號表達式。其一般形式為: 表達式表達式1 1,表達式,表達式2 2; 其求值過程是分別求兩個表達式的值,并以表達式其求值過程是分別求兩個表達式的值,并以表達式2 2的值作為整個逗號表達式的值。的值作為整個逗號表達式的值。 C C語言程序設(shè)計語言程序設(shè)計 從程序流程的角度來看,程序可以分為三種基從程序流程的角度來看,程序可以分為三種基本結(jié)構(gòu),即:本結(jié)構(gòu),即: 順序結(jié)

16、構(gòu)順序結(jié)構(gòu) 分支結(jié)構(gòu)分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 這三種基本結(jié)構(gòu)可以組成所有的各種復(fù)雜程序。這三種基本結(jié)構(gòu)可以組成所有的各種復(fù)雜程序。語言提供了多種語句來實現(xiàn)這些結(jié)構(gòu)。語言提供了多種語句來實現(xiàn)這些結(jié)構(gòu)。1. 1. 分支結(jié)構(gòu)程序分支結(jié)構(gòu)程序 (1 1)ifif語句語句 用用ifif語句可以構(gòu)成分支結(jié)構(gòu)。它根據(jù)給定的條件進行判斷,語句可以構(gòu)成分支結(jié)構(gòu)。它根據(jù)給定的條件進行判斷,以決定執(zhí)行某個分支程序段。以決定執(zhí)行某個分支程序段。C C語言的語言的ifif語句有三種基本形式。語句有三種基本形式。 第一種形式為基本形式:第一種形式為基本形式: if (if (表達式表達式) ) 語句語句 其語義是:如果

17、表達式的值為真,則執(zhí)行其后的語句,否則其語義是:如果表達式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。不執(zhí)行該語句。 第二種形式為:第二種形式為:if-elseif-else if(if(表達式表達式) ) 語句語句1 1; else else 語句語句2 2; 其語義是:如果表達式的值為真,則執(zhí)行語句其語義是:如果表達式的值為真,則執(zhí)行語句1 1,否則執(zhí)行,否則執(zhí)行語句語句2 2 。 第三種形式為:第三種形式為:if-else-ifif-else-if 前二種形式的前二種形式的ifif語句一般都用于兩個分支的情況。當(dāng)有多個分支選擇語句一般都用于兩個分支的情況。當(dāng)有多個分支選擇時,可采用時,

18、可采用if-else-ifif-else-if語句,其一般形式為:語句,其一般形式為: if( if(表達式表達式) ) 語句語句1 1; else if( else if(表達式表達式2)2) 語句語句2 2; else if( else if(表達式表達式3)3) 語句語句3 3; else if( else if(表達式表達式m)m) 語句語句m m; else else 語句語句n n; 其語義是:依次判斷表達式的值,當(dāng)出現(xiàn)某個值為真時,則執(zhí)行其對其語義是:依次判斷表達式的值,當(dāng)出現(xiàn)某個值為真時,則執(zhí)行其對應(yīng)的語句。然后跳到整個應(yīng)的語句。然后跳到整個ifif語句之外繼續(xù)執(zhí)行程序。如果所

19、有的表達式均為語句之外繼續(xù)執(zhí)行程序。如果所有的表達式均為假,則執(zhí)行語句假,則執(zhí)行語句n n。然后繼續(xù)執(zhí)行后續(xù)程序。然后繼續(xù)執(zhí)行后續(xù)程序。(2 2)switchswitch語句語句 C C語言還提供了另一種用于多分支選擇的語言還提供了另一種用于多分支選擇的switchswitch語句,其一般語句,其一般形式為:形式為: switch(switch(表達式表達式) ) case case常量表達式常量表達式1: 1: 語句體語句體1;1; case case常量表達式常量表達式2: 2: 語句體語句體2;2; case case常量表達式常量表達式n: n: 語句體語句體n;n; default:

20、 default: 語句體語句體n+1;n+1; 其語義是:計算表達式的值,并逐個與其后的常量表達式值其語義是:計算表達式的值,并逐個與其后的常量表達式值相比較,當(dāng)表達式的值與某個常量表達式的值相等時,即執(zhí)行其相比較,當(dāng)表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句體。一般語句體中包含后的語句體。一般語句體中包含breakbreak語句,所以執(zhí)行完語句體后,語句,所以執(zhí)行完語句體后,不再進行判斷其他的不再進行判斷其他的casecase語句,直接執(zhí)行語句,直接執(zhí)行switchswitch語句后面的程序。語句后面的程序。如表達式的值與所有如表達式的值與所有casecase后的常量表達式均不

21、相同時,則執(zhí)行后的常量表達式均不相同時,則執(zhí)行defaultdefault后的語句體。后的語句體。 2. 2. 循環(huán)結(jié)構(gòu)程序循環(huán)結(jié)構(gòu)程序 循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu)。其特點是,在給定條件成立時,反復(fù)執(zhí)行某程序段,直到條件不成在給定條件成立時,反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。語言提供了多種循環(huán)語句,可以組成各稱為循環(huán)體。語言提供了多種循環(huán)語句,可以組成各種不同形式的循環(huán)結(jié)構(gòu)。種不同形式的循環(huán)結(jié)構(gòu)。 (1 1)whilewhile語句語句 wh

22、ile while語句的一般形式為:語句的一般形式為: while(while(表達式表達式) ) 語句;語句; 其中表達式是循環(huán)條件,語句為循環(huán)體。其中表達式是循環(huán)條件,語句為循環(huán)體。 while while語句的語義是:計算表達式的值,當(dāng)值為真語句的語義是:計算表達式的值,當(dāng)值為真(非(非0 0)時,)時, 執(zhí)行循環(huán)體語句。執(zhí)行循環(huán)體語句。 (2)2)dodowhilewhile語句語句 do-while do-while語句的一般形式為:語句的一般形式為: dodo 語句;語句; while( while(表達式表達式) ); 其中語句是循環(huán)體,表達式是循環(huán)條件。其中語句是循環(huán)體,表達式

23、是循環(huán)條件。 do-while do-while語句的語義是:先執(zhí)行循環(huán)體語句一次,再判別表語句的語義是:先執(zhí)行循環(huán)體語句一次,再判別表達式的值,若為真(非達式的值,若為真(非0 0)則繼續(xù)循環(huán),否則終止循環(huán)。)則繼續(xù)循環(huán),否則終止循環(huán)。 do-while do-while語句和語句和whilewhile語句的區(qū)別在于語句的區(qū)別在于do-whiledo-while是先執(zhí)行后判是先執(zhí)行后判斷,因此斷,因此do-whiledo-while至少要執(zhí)行一次循環(huán)體。而至少要執(zhí)行一次循環(huán)體。而whilewhile是先判斷后執(zhí)是先判斷后執(zhí)行,如果條件不滿足,則一次循環(huán)體語句也不執(zhí)行。行,如果條件不滿足,則一

24、次循環(huán)體語句也不執(zhí)行。whilewhile語句和語句和do-whiledo-while語句一般都可以相互改寫。語句一般都可以相互改寫。(3) 3) forfor語句語句 for for語句是語句是C C語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。其一般語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。其一般形式為:形式為: for(for(表達式表達式1 1;表達式;表達式2 2;表達;表達3)3) 語句;語句; 其中,表達式其中,表達式1 1通常用來給循環(huán)變量賦初值,一般是賦值表達式。也允許在通常用來給循環(huán)變量賦初值,一般是賦值表達式。也允許在forfor語句外給循環(huán)變量賦初值,此時可以省

25、略該表達式。語句外給循環(huán)變量賦初值,此時可以省略該表達式。 表達式表達式2 2通常是循環(huán)條件,一般為關(guān)系表達式或邏輯表達式。通常是循環(huán)條件,一般為關(guān)系表達式或邏輯表達式。 表達式表達式3 3通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。 這三個表達式都可以是逗號表達式,這三個表達式都可以是逗號表達式, 即每個表達式都可由多個表達式組成。即每個表達式都可由多個表達式組成。三個表達式都是任選項,都可以省略。三個表達式都是任選項,都可以省略。 一般形式中的一般形式中的“語句語句”即為循環(huán)體語句。即為循環(huán)體語句。forfor語句的語義是:語句的語義是: 1.

26、1.首先計算表達式首先計算表達式1 1的值。的值。 2. 2.再計算表達式再計算表達式2 2的值,若值為真(非的值,若值為真(非0 0)則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。)則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。 3. 3.然后再計算表達式然后再計算表達式3 3的值,轉(zhuǎn)回第的值,轉(zhuǎn)回第2 2步重復(fù)執(zhí)行。在整個步重復(fù)執(zhí)行。在整個forfor循環(huán)過程中,循環(huán)過程中,表達式表達式1 1只計算一次,表達式只計算一次,表達式2 2和表達式和表達式3 3則可能計算多次。循環(huán)體可能多次執(zhí)行,則可能計算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。也可能一次都不執(zhí)行。3. 3. 轉(zhuǎn)移語句轉(zhuǎn)移語句 程序中的語句通??偸前?/p>

27、順序方向,或按語句功能程序中的語句通??偸前错樞蚍较?,或按語句功能所定義的方向執(zhí)行的。如果需要改變程序的正常流向,所定義的方向執(zhí)行的。如果需要改變程序的正常流向,可以使用轉(zhuǎn)移語句。在語言中提供了可以使用轉(zhuǎn)移語句。在語言中提供了4 4種轉(zhuǎn)移語句:種轉(zhuǎn)移語句: goto,break,continuegoto,break,continue和和returnreturn。 其中的其中的returnreturn語句只能出現(xiàn)在被調(diào)函數(shù)中,用于返語句只能出現(xiàn)在被調(diào)函數(shù)中,用于返回主調(diào)函數(shù)。回主調(diào)函數(shù)。 (1 1)gotogoto語句語句 gotogoto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下:語句也稱為無條

28、件轉(zhuǎn)移語句,其一般格式如下: gotogoto 語句標號;語句標號; 其中語句標號是按標識符規(guī)定書寫的符號,放在某一語句行的前面,其中語句標號是按標識符規(guī)定書寫的符號,放在某一語句行的前面,標號后加冒號標號后加冒號( (:) )。語句標號起標識語句的作用,與。語句標號起標識語句的作用,與gotogoto語句配合使用。語句配合使用。 (2 2)breakbreak語句語句 break break語句只能用在語句只能用在switch switch 語句或循環(huán)語句中,其作用是跳出語句或循環(huán)語句中,其作用是跳出switchswitch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于語句或跳出本層循環(huán),轉(zhuǎn)去

29、執(zhí)行后面的程序。由于breakbreak語句的轉(zhuǎn)移方向是語句的轉(zhuǎn)移方向是明確的,所以不需要語句標號與之配合。明確的,所以不需要語句標號與之配合。breakbreak語句的一般形式為:語句的一般形式為: break break; 使用使用breakbreak語句可以使循環(huán)語句有多個出口,在一些場合下使編程更加語句可以使循環(huán)語句有多個出口,在一些場合下使編程更加靈活、方便。靈活、方便。 (3 3)continuecontinue語句語句 continue continue語句只能用在循環(huán)體中,其一般格式是:語句只能用在循環(huán)體中,其一般格式是: continue continue; 其語義是:結(jié)束本

30、次循環(huán),即不再執(zhí)行循環(huán)體中其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue continue 語句之后的語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是,本語句只結(jié)束本語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是,本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。層本次的循環(huán),并不跳出循環(huán)。函數(shù)函數(shù) C C語言程序是由函數(shù)組成的。函數(shù)是源程序的基本語言程序是由函數(shù)組成的。函數(shù)是源程序的基本模塊,通過對函數(shù)模塊的調(diào)用實現(xiàn)特定的功能。模塊,通過對函數(shù)模塊的調(diào)用實現(xiàn)特定的功能。語言語言中的函數(shù)相當(dāng)于其它高級語言的子程序。語言不僅提中的函數(shù)相當(dāng)于其它高級語言的子程序。語言不僅提供了極為

31、豐富的庫函數(shù),還允許用戶建立自己定義的函供了極為豐富的庫函數(shù),還允許用戶建立自己定義的函數(shù)。用戶可把自己的算法編成一個個相對獨立的函數(shù)模數(shù)。用戶可把自己的算法編成一個個相對獨立的函數(shù)模塊,然后用調(diào)用的方法來使用函數(shù)。可以說程序的全塊,然后用調(diào)用的方法來使用函數(shù)??梢哉f程序的全部工作都是由各式各樣的函數(shù)完成的,所以也把語言部工作都是由各式各樣的函數(shù)完成的,所以也把語言稱為函數(shù)式語言。由于采用了函數(shù)模塊式的結(jié)構(gòu),語稱為函數(shù)式語言。由于采用了函數(shù)模塊式的結(jié)構(gòu),語言易于實現(xiàn)結(jié)構(gòu)化程序設(shè)計。使程序的層次結(jié)構(gòu)清晰,言易于實現(xiàn)結(jié)構(gòu)化程序設(shè)計。使程序的層次結(jié)構(gòu)清晰,便于程序的編寫、閱讀、調(diào)試。便于程序的編寫、

32、閱讀、調(diào)試。1 1函數(shù)定義的一般形式函數(shù)定義的一般形式 (1 1)無參函數(shù)的一般形式)無參函數(shù)的一般形式 類型說明符類型說明符 函數(shù)名函數(shù)名()() 類型說明;類型說明; 語句;語句; 其中類型說明符和函數(shù)名稱為函數(shù)頭。類型說明符指明了本其中類型說明符和函數(shù)名稱為函數(shù)頭。類型說明符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。函數(shù)名是函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。函數(shù)名是由用戶定義的標識符,函數(shù)名后有一個空括號,其中無參數(shù),但由用戶定義的標識符,函數(shù)名后有一個空括號,其中無參數(shù),但括號不可少。括號不可少。 中的內(nèi)容稱為函數(shù)體。在函數(shù)體中也有類型說明,中的內(nèi)容稱為函數(shù)

33、體。在函數(shù)體中也有類型說明,這是對函數(shù)體內(nèi)部所用到的變量的類型說明。在很多情況下都不這是對函數(shù)體內(nèi)部所用到的變量的類型說明。在很多情況下都不要求無參函數(shù)有返回值,此時函數(shù)類型符可以寫為要求無參函數(shù)有返回值,此時函數(shù)類型符可以寫為voidvoid。(2 2)有參函數(shù)的一般形式)有參函數(shù)的一般形式 類型說明符類型說明符 函數(shù)名函數(shù)名( (形式參數(shù)類型說明表形式參數(shù)類型說明表) ) 類型說明;類型說明; 語句;語句; 有參函數(shù)比無參函數(shù)多了兩個內(nèi)容,其一是形式參數(shù)表,其二有參函數(shù)比無參函數(shù)多了兩個內(nèi)容,其一是形式參數(shù)表,其二是形式參數(shù)類型說明。在形參表中給出的參數(shù)稱為形式參數(shù),它們是形式參數(shù)類型說明

34、。在形參表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號間隔。在進行函數(shù)調(diào)用可以是各種類型的變量,各參數(shù)之間用逗號間隔。在進行函數(shù)調(diào)用時,主調(diào)函數(shù)將賦予這些形式參數(shù)實際的值。形參既然是變量,當(dāng)時,主調(diào)函數(shù)將賦予這些形式參數(shù)實際的值。形參既然是變量,當(dāng)然必須給以類型說明。然必須給以類型說明。 在程序中是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它在程序中是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。語言中,函數(shù)調(diào)用的一般形式為:語言的子程序調(diào)用相似。語言中,函數(shù)調(diào)用的一般形式為: 函數(shù)名函數(shù)名( (實際參數(shù)表實際參數(shù)表) ); 對無參函數(shù)調(diào)用時則無實際

35、參數(shù)表。實際參數(shù)表中的參數(shù)可以對無參函數(shù)調(diào)用時則無實際參數(shù)表。實際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達式。各實參之間用逗號分是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達式。各實參之間用逗號分隔。隔。 2. 2. 函數(shù)的參數(shù)和函數(shù)的值函數(shù)的參數(shù)和函數(shù)的值 (1 1)函數(shù)的參數(shù))函數(shù)的參數(shù) 函數(shù)的參數(shù)分為形參和實參兩種。形參出現(xiàn)在函數(shù)函數(shù)的參數(shù)分為形參和實參兩種。形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不定義中,在整個函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不能使用。實參出現(xiàn)在主調(diào)函數(shù)中,進入被調(diào)函數(shù)后,實能使用。實參出現(xiàn)在主調(diào)函數(shù)中,進入被調(diào)函數(shù)后,實參變量也不能使用。參變

36、量也不能使用。形參和實參的功能是作數(shù)據(jù)傳送。形參和實參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時,主調(diào)函數(shù)把實參的值傳送給被調(diào)函數(shù)發(fā)生函數(shù)調(diào)用時,主調(diào)函數(shù)把實參的值傳送給被調(diào)函數(shù)的形參從而實現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。的形參從而實現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。(2 2)函數(shù)的值)函數(shù)的值 函數(shù)的值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并函數(shù)的值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值返回給主調(diào)函數(shù)的值。對函數(shù)的值(或稱函數(shù)返回值)有以下一些說明:。對函數(shù)的值(或稱函數(shù)返回值)有以下一些說明: a. a. 函數(shù)的值只能通過函數(shù)的值只能通過returnretur

37、n語句返回主調(diào)函數(shù)。語句返回主調(diào)函數(shù)。 return return 語句的一般形式為:語句的一般形式為: return return 表達式;表達式; 或者為:或者為: return ( return (表達式表達式) ); 該語句的功能是計算表達式的值,并返回給主調(diào)函數(shù)。在函數(shù)中允該語句的功能是計算表達式的值,并返回給主調(diào)函數(shù)。在函數(shù)中允許有多個許有多個returnreturn語句,但每次調(diào)用只能有一個語句,但每次調(diào)用只能有一個return return 語句被執(zhí)行,因語句被執(zhí)行,因此只能返回一個函數(shù)值。此只能返回一個函數(shù)值。 b. b. 函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。如果兩

38、者不函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。如果兩者不一致,則以函數(shù)類型為準,自動進行類型轉(zhuǎn)換。一致,則以函數(shù)類型為準,自動進行類型轉(zhuǎn)換。 c. c. 如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。 d. d. 不返回函數(shù)值的函數(shù),可以明確定義為不返回函數(shù)值的函數(shù),可以明確定義為“空類型空類型”,類型說明符,類型說明符為為“void”void”。 3. 3. 函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用 語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級函數(shù)和下一級函數(shù)的問題。但是不存在上

39、一級函數(shù)和下一級函數(shù)的問題。但是語言允許在一個函數(shù)語言允許在一個函數(shù)的定義中出現(xiàn)對另一個函數(shù)的調(diào)用的定義中出現(xiàn)對另一個函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。 4. 4. 函數(shù)的遞歸調(diào)用函數(shù)的遞歸調(diào)用 一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用。這種函數(shù)稱。這種函數(shù)稱為遞歸函數(shù)。語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函數(shù)為遞歸函數(shù)。語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進入又是被調(diào)函數(shù)。執(zhí)行遞歸

40、函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進入新的一層。新的一層。5. 5. 變量的作用域變量的作用域 在討論函數(shù)的形參變量時曾經(jīng)提到,形參變量只在被調(diào)用期間才在討論函數(shù)的形參變量時曾經(jīng)提到,形參變量只在被調(diào)用期間才分配內(nèi)存單元,調(diào)用結(jié)束立即釋放。這一點表明形參變量只有在函數(shù)分配內(nèi)存單元,調(diào)用結(jié)束立即釋放。這一點表明形參變量只有在函數(shù)內(nèi)才是有效的,離開該函數(shù)就不能再使用了。這種變量有效性的范圍內(nèi)才是有效的,離開該函數(shù)就不能再使用了。這種變量有效性的范圍稱變量的作用域。不僅對于形參變量,語言中所有的量都有自己的稱變量的作用域。不僅對于形參變量,語言中所有的量都有自己的作用域。變量說明的方式不同,其作用域

41、也不同。語言中的變量,作用域。變量說明的方式不同,其作用域也不同。語言中的變量,按作用域范圍可分為兩種,按作用域范圍可分為兩種, 即局部變量和全局變量。即局部變量和全局變量。指針指針 指針是語言中廣泛使用的一種數(shù)據(jù)類型。運用指針編程是語指針是語言中廣泛使用的一種數(shù)據(jù)類型。運用指針編程是語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu);能很方言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu);能很方便地使用數(shù)組和字符串;并能象匯編語言一樣處理內(nèi)存地址,從而編便地使用數(shù)組和字符串;并能象匯編語言一樣處理內(nèi)存地址,從而編出精練而高效的程序。指針極大地豐富了語言的功能。學(xué)習(xí)指針是出精練而高效的

42、程序。指針極大地豐富了語言的功能。學(xué)習(xí)指針是學(xué)習(xí)語言中最重要的一環(huán),能否正確理解和使用指針是我們是否掌學(xué)習(xí)語言中最重要的一環(huán),能否正確理解和使用指針是我們是否掌握語言的一個標志。握語言的一個標志。 既然既然指針變量的值是一個地址指針變量的值是一個地址,那么,那么這個地址不僅可以是變量的這個地址不僅可以是變量的地址,也可以是其它數(shù)據(jù)結(jié)構(gòu)的地址地址,也可以是其它數(shù)據(jù)結(jié)構(gòu)的地址。在一個指針變量中存放一個數(shù)。在一個指針變量中存放一個數(shù)組或一個函數(shù)的首地址有何意義呢?因為數(shù)組或函數(shù)都是連續(xù)存放的。組或一個函數(shù)的首地址有何意義呢?因為數(shù)組或函數(shù)都是連續(xù)存放的。通過訪問指針變量取得了數(shù)組或函數(shù)的首地址,也就

43、找到了該數(shù)組或通過訪問指針變量取得了數(shù)組或函數(shù)的首地址,也就找到了該數(shù)組或函數(shù)。這樣一來,凡是出現(xiàn)數(shù)組、函數(shù)的地方都可以用一個指針變量函數(shù)。這樣一來,凡是出現(xiàn)數(shù)組、函數(shù)的地方都可以用一個指針變量來表示,只要該指針變量中賦予數(shù)組或函數(shù)的首地址即可。這樣做,來表示,只要該指針變量中賦予數(shù)組或函數(shù)的首地址即可。這樣做,將會使程序的概念十分清楚,程序本身也精練、高效。在語言中,將會使程序的概念十分清楚,程序本身也精練、高效。在語言中,一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)往往都占有一組連續(xù)的內(nèi)存單元。用一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu)往往都占有一組連續(xù)的內(nèi)存單元。用“地址地址”這個概念并不能很好地描述一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu),而

44、這個概念并不能很好地描述一種數(shù)據(jù)類型或數(shù)據(jù)結(jié)構(gòu),而“指針指針”雖雖然實際上也是一個地址,但它卻是一個數(shù)據(jù)結(jié)構(gòu)的首地址,它是然實際上也是一個地址,但它卻是一個數(shù)據(jù)結(jié)構(gòu)的首地址,它是“指指向向”一個數(shù)據(jù)結(jié)構(gòu)的,因而概念更為清楚,表示更為明確。這也是引一個數(shù)據(jù)結(jié)構(gòu)的,因而概念更為清楚,表示更為明確。這也是引入入“指針指針”概念的一個重要原因。概念的一個重要原因。 在在C C語言中規(guī)定,一個函數(shù)總是占用一段連續(xù)的內(nèi)存語言中規(guī)定,一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可以把函數(shù)的這個首地址(或稱入口地址)賦予一個指針以

45、把函數(shù)的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數(shù)。然后通過指針變量就變量,使該指針變量指向該函數(shù)。然后通過指針變量就可以找到并調(diào)用這個函數(shù)。我們把這種指向函數(shù)的指針可以找到并調(diào)用這個函數(shù)。我們把這種指向函數(shù)的指針變量稱為變量稱為“函數(shù)指針變量函數(shù)指針變量”。 函數(shù)指針變量函數(shù)指針變量定義的一般形式為:定義的一般形式為: 類型說明符類型說明符 ( (* *指針變量名指針變量名)();)(); 其中其中“類型說明符類型說明符”表示被指函數(shù)的返回值的類型。表示被指函數(shù)的返回值的類型?!?“(* * 指針變量名指針變量名)”)”表示表示“* *”后面的變量是定義的指針后面的變

46、量是定義的指針變量。最后的空括號表示指針變量所指的是一個函數(shù)。變量。最后的空括號表示指針變量所指的是一個函數(shù)。例如:例如:intint ( (* *pf)();pf)();表示表示pfpf是一個指向函數(shù)入口的指針是一個指向函數(shù)入口的指針變量,該函數(shù)的返回值變量,該函數(shù)的返回值( (函數(shù)值函數(shù)值) )是整型是整型。結(jié)構(gòu)與聯(lián)合結(jié)構(gòu)與聯(lián)合 1. 1. 結(jié)構(gòu)類型定義和結(jié)構(gòu)變量說明結(jié)構(gòu)類型定義和結(jié)構(gòu)變量說明 在實際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型。例如,在實際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型。例如, 在在學(xué)生登記表中,姓名應(yīng)為字符型;學(xué)號可為整型或字符型;年齡應(yīng)為學(xué)生登記表中,姓名應(yīng)為字符型

47、;學(xué)號可為整型或字符型;年齡應(yīng)為整型;性別應(yīng)為字符型;成績可為整型或?qū)嵭汀o@然不能用一個數(shù)組整型;性別應(yīng)為字符型;成績可為整型或?qū)嵭?。顯然不能用一個數(shù)組來存放這一組數(shù)據(jù)。因為數(shù)組中各元素的類型和長度都必須一致,以來存放這一組數(shù)據(jù)。因為數(shù)組中各元素的類型和長度都必須一致,以便于編譯系統(tǒng)處理。為了解決這個問題,語言中給出了另一種構(gòu)造便于編譯系統(tǒng)處理。為了解決這個問題,語言中給出了另一種構(gòu)造數(shù)據(jù)類型數(shù)據(jù)類型“結(jié)構(gòu)結(jié)構(gòu)”。 它相當(dāng)于其它高級語言中的記錄。它相當(dāng)于其它高級語言中的記錄。 “ “結(jié)構(gòu)結(jié)構(gòu)”是一種構(gòu)造類型,它是由若干是一種構(gòu)造類型,它是由若干“成員成員”組成的。每一個組成的。每一個成員可以是

48、一個基本數(shù)據(jù)類型或者又是一個構(gòu)造類型。結(jié)構(gòu)既是一種成員可以是一個基本數(shù)據(jù)類型或者又是一個構(gòu)造類型。結(jié)構(gòu)既是一種“構(gòu)造構(gòu)造”而成的數(shù)據(jù)類型,那么在說明和使用之前必須先定義它,也而成的數(shù)據(jù)類型,那么在說明和使用之前必須先定義它,也就是構(gòu)造它。如同在說明和調(diào)用函數(shù)之前要先定義函數(shù)一樣。就是構(gòu)造它。如同在說明和調(diào)用函數(shù)之前要先定義函數(shù)一樣。 (1 1)結(jié)構(gòu)的定義)結(jié)構(gòu)的定義 定義一個結(jié)構(gòu)的一般形式為:定義一個結(jié)構(gòu)的一般形式為: structstruct 結(jié)構(gòu)名結(jié)構(gòu)名 成員表列;成員表列; ; ; 成員表由若干個成員組成,每個成員都是該結(jié)構(gòu)成員表由若干個成員組成,每個成員都是該結(jié)構(gòu)的一個組成部分。對每個

49、成員也必須作類型說明,其的一個組成部分。對每個成員也必須作類型說明,其形式為:形式為: 類型說明符類型說明符 成員名成員名; ; 成員名的命名應(yīng)符合標識符的書寫規(guī)定。成員名的命名應(yīng)符合標識符的書寫規(guī)定。例如:例如: structstruct student student intint num; num; char name20; char name20; char sex; char sex; float score; float score; ; ; 在這個結(jié)構(gòu)定義中,結(jié)構(gòu)名為在這個結(jié)構(gòu)定義中,結(jié)構(gòu)名為studentstudent,該結(jié)構(gòu)由該結(jié)構(gòu)由4 4個成員組成。個成員組成。第一個成員為

50、第一個成員為numnum,整型變量;第二個成員為整型變量;第二個成員為namename,字符數(shù)組;第三字符數(shù)組;第三個成員為個成員為sexsex,字符變量;第四個成員為字符變量;第四個成員為scorescore,實型變量。應(yīng)注意在實型變量。應(yīng)注意在括號后的分號是不可少的。結(jié)構(gòu)定義之后,即可進行變量說明。凡說括號后的分號是不可少的。結(jié)構(gòu)定義之后,即可進行變量說明。凡說明為結(jié)構(gòu)明為結(jié)構(gòu)studentstudent的變量都由上述的變量都由上述4 4個成員組成。由此可見,結(jié)構(gòu)是一個成員組成。由此可見,結(jié)構(gòu)是一種復(fù)雜的數(shù)據(jù)類型,是數(shù)目固定,類型不同的若干有序變量的集合。種復(fù)雜的數(shù)據(jù)類型,是數(shù)目固定,類型

51、不同的若干有序變量的集合。(2 2)結(jié)構(gòu)類型變量的說明)結(jié)構(gòu)類型變量的說明 說明結(jié)構(gòu)變量有以下三種方法。以上面定義的說明結(jié)構(gòu)變量有以下三種方法。以上面定義的studentstudent為例來加以說明。為例來加以說明。a.a.先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量。先定義結(jié)構(gòu),再說明結(jié)構(gòu)變量。 如:如: structstruct student student intint num; num; char name20; char name20; char sex; char sex; float score; float score; ; ;structstruct student boy1,boy2; s

52、tudent boy1,boy2; 說明了兩個變量說明了兩個變量boy1boy1和和boy2boy2為為studentstudent結(jié)構(gòu)類型。結(jié)構(gòu)類型。也可以用宏定義使一個符號常量來表示一個結(jié)構(gòu)類型,例如:也可以用宏定義使一個符號常量來表示一個結(jié)構(gòu)類型,例如: # #define STU define STU structstruct student student STU STU intint num; num; char name20; char name20; char sex; char sex; float score; float score; ; ; STU boy1,boy2;

53、 STU boy1,boy2;b. b. 在定義結(jié)構(gòu)類型的同時說明結(jié)構(gòu)變量。在定義結(jié)構(gòu)類型的同時說明結(jié)構(gòu)變量。 例如:例如: structstruct student student intint num; num; char name20; char name20; char sex; char sex; float score; float score; boy1,boy2; boy1,boy2;c. c. 直接說明結(jié)構(gòu)變量。直接說明結(jié)構(gòu)變量。 例如:例如: structstruct intint num; num; char name20; char name20; char sex;

54、char sex; float score; float score; boy1,boy2; boy1,boy2; 表示結(jié)構(gòu)變量成員的一般形式是:表示結(jié)構(gòu)變量成員的一般形式是: 結(jié)構(gòu)變量名結(jié)構(gòu)變量名. .成員名成員名 例如:例如:boy1.num boy1.num 即第一個人的學(xué)號;即第一個人的學(xué)號;boy2.sex boy2.sex 即第二個人的即第二個人的性別。如果成員本身又是一個結(jié)構(gòu)則必須逐級找到最低級的成員才性別。如果成員本身又是一個結(jié)構(gòu)則必須逐級找到最低級的成員才能使用。例如:能使用。例如:boy1.birthday.month boy1.birthday.month 即第一個人出生

55、的月份成員即第一個人出生的月份成員可以在程序中單獨使用,與普通變量完全相同??梢栽诔绦蛑袉为毷褂?,與普通變量完全相同。(3 3)結(jié)構(gòu)變量的賦值)結(jié)構(gòu)變量的賦值 前面已經(jīng)介紹,結(jié)構(gòu)變量的賦值就是給各成員賦值。前面已經(jīng)介紹,結(jié)構(gòu)變量的賦值就是給各成員賦值??捎幂斎胝Z句或賦值語句來完成??捎幂斎胝Z句或賦值語句來完成。(4 4)結(jié)構(gòu)變量的初始化)結(jié)構(gòu)變量的初始化 如果結(jié)構(gòu)變量是全局變量或為靜態(tài)變量,則可對它如果結(jié)構(gòu)變量是全局變量或為靜態(tài)變量,則可對它作初始化賦值。對局部或自動結(jié)構(gòu)變量不能作初始化賦作初始化賦值。對局部或自動結(jié)構(gòu)變量不能作初始化賦值。值。2. 2. 聯(lián)合聯(lián)合 “聯(lián)合聯(lián)合”與與“結(jié)構(gòu)結(jié)構(gòu)”

56、有一些相似之處。但兩者有本質(zhì)有一些相似之處。但兩者有本質(zhì)上的不同。在結(jié)構(gòu)中各成員有各自的內(nèi)存空間,上的不同。在結(jié)構(gòu)中各成員有各自的內(nèi)存空間,一個結(jié)構(gòu)一個結(jié)構(gòu)變量的總長度是各成員長度之和變量的總長度是各成員長度之和。而。而在在“聯(lián)合聯(lián)合”中,各成中,各成員共享一段內(nèi)存空間,一個聯(lián)合變量的長度等于各成員中員共享一段內(nèi)存空間,一個聯(lián)合變量的長度等于各成員中最長的長度最長的長度。應(yīng)該說明的是,這里所謂的共享不是指把多。應(yīng)該說明的是,這里所謂的共享不是指把多個成員同時裝入一個聯(lián)合變量內(nèi),而是指該聯(lián)合變量可被個成員同時裝入一個聯(lián)合變量內(nèi),而是指該聯(lián)合變量可被賦予任一成員值,但每次只能賦一種值,賦入新值則沖

57、去賦予任一成員值,但每次只能賦一種值,賦入新值則沖去舊值。如前面介紹的舊值。如前面介紹的“單位單位”變量,如定義為一個可裝入變量,如定義為一個可裝入“班級班級”或或“教研室教研室”的聯(lián)合后,就允許賦予整型值(班的聯(lián)合后,就允許賦予整型值(班級)或字符串(教研室)。要么賦予整型值,要么賦予字級)或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時賦予它。聯(lián)合類型的定義和聯(lián)合變符串,不能把兩者同時賦予它。聯(lián)合類型的定義和聯(lián)合變量的說明一個聯(lián)合類型必須經(jīng)過定義之后,才能把變量說量的說明一個聯(lián)合類型必須經(jīng)過定義之后,才能把變量說明為該聯(lián)合類型。明為該聯(lián)合類型。(1 1)聯(lián)合的定義)聯(lián)合的

58、定義 定義一個聯(lián)合類型的一般形式為:定義一個聯(lián)合類型的一般形式為: union union 聯(lián)合名聯(lián)合名 成員表;成員表; ; ; 成員表中含有若干成員,成員的一般形式為:成員表中含有若干成員,成員的一般形式為: 類型說明符類型說明符 成員名。成員成員名。成員名的命名應(yīng)符合標識符的規(guī)定。例如:名的命名應(yīng)符合標識符的規(guī)定。例如: union union perdataperdata intint class; class; char office10; char office10; ; ; 定義了一個名為定義了一個名為perdataperdata的聯(lián)合類型,它含有兩個成員,一個為整型,成員的聯(lián)合

59、類型,它含有兩個成員,一個為整型,成員名為名為classclass;另一個為字符數(shù)組,數(shù)組名為另一個為字符數(shù)組,數(shù)組名為officeoffice。聯(lián)合定義之后,即可進行聯(lián)聯(lián)合定義之后,即可進行聯(lián)合變量說明,被說明為合變量說明,被說明為perdataperdata類型的變量,可以存放整型量類型的變量,可以存放整型量classclass或存放字符或存放字符數(shù)組數(shù)組officeoffice。(2 2)聯(lián)合變量的說明)聯(lián)合變量的說明 聯(lián)合變量的說明和結(jié)構(gòu)變量的說明方式相同,也有三種形式。即先定義,聯(lián)合變量的說明和結(jié)構(gòu)變量的說明方式相同,也有三種形式。即先定義,再說明;定義同時說明和直接說明。以再說明;

60、定義同時說明和直接說明。以perdataperdata類型為例,說明如下:類型為例,說明如下: union union perdataperdata intint class; class; char officae10; char officae10; ; ; union union perdataperdata a,b; / a,b; /* *說明說明a,ba,b為為perdataperdata類型類型* */ / 或者可同時說明為:或者可同時說明為: union union perdataperdata intint class; class; char office10; char o

溫馨提示

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

評論

0/150

提交評論