久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      C語(yǔ)言函數(shù)說(shuō)明與返回值

      在學(xué)習(xí)C語(yǔ)言函數(shù)以前,我們需要了解什么是模塊化程序設(shè)計(jì)方法。
      人們?cè)谇蠼庖粋€(gè)復(fù)雜問(wèn)題時(shí),通常采用的是逐步分解、分而治之的方法,也就是把一個(gè)大問(wèn)題分解成若干個(gè)比較容易求解的小問(wèn)題,然后分別求解。程序員在設(shè)計(jì)一個(gè)復(fù)雜的應(yīng)用程序時(shí),往往也是把整個(gè)程序劃分為若干功能較為單一的程序模塊,然后分別予以實(shí)現(xiàn),最后再把所有的程序模塊像搭積木一樣裝配起來(lái),這種在程序設(shè)計(jì)中分而治之的策略,被稱(chēng)為模塊化程序設(shè)計(jì)方法。
      在C語(yǔ)言中,函數(shù)是程序的基本組成單位,因此可以很方便地用函數(shù)作為程序模塊來(lái)實(shí)現(xiàn)C語(yǔ)言程序。
      利用函數(shù),不僅可以實(shí)現(xiàn)程序的模塊化,程序設(shè)計(jì)得簡(jiǎn)單和直觀,提高了程序的易讀性和可維護(hù)性,而且還可以把程序中普通用到的一些計(jì)算或操作編成通用的函數(shù),以供隨時(shí)調(diào)用,這樣可以大大地減輕程序員的代碼工作量。
      函數(shù)是C語(yǔ)言的基本構(gòu)件,是所有程序活動(dòng)的舞臺(tái)。函數(shù)的一般形式是:
      type-specifier function_name(parameter list)
      parameter declarations
      {
      body of the function
      }
      類(lèi)型說(shuō)明符定義了函數(shù)中return語(yǔ)句返回值的類(lèi)型,該返回值可以是任何有效類(lèi)型。如果沒(méi)有類(lèi)型說(shuō)明符出現(xiàn),函數(shù)返回一個(gè)整型值。參數(shù)表是一個(gè)用逗號(hào)分隔的變量表,當(dāng)函數(shù)被調(diào)用時(shí)這些變量接收調(diào)用參數(shù)的值。一個(gè)函數(shù)可以沒(méi)有參數(shù),這時(shí)函數(shù)表是空的。但即使沒(méi)有參數(shù),括號(hào)仍然是必須要有的。參數(shù)說(shuō)明段定義了其中參數(shù)的類(lèi)型。
      當(dāng)一個(gè)函數(shù)沒(méi)有明確說(shuō)明類(lèi)型時(shí), C語(yǔ)言的編譯程序自動(dòng)將整型( i n t)作為這個(gè)函數(shù)的缺省類(lèi)型,缺省類(lèi)型適用于很大一部分函數(shù)。當(dāng)有必要返回其它類(lèi)型數(shù)據(jù)時(shí),需要分兩步處理:
      首先,必須給函數(shù)以明確的類(lèi)型說(shuō)明符;其次,函數(shù)類(lèi)型的說(shuō)明必須處于對(duì)它的首次調(diào)用之前。只有這樣,C編譯程序才能為返回非整型的值的函數(shù)生成正確代碼。
      4.1.1 函數(shù)的類(lèi)型說(shuō)明
      可將函數(shù)說(shuō)明為返回任何一種合法的C語(yǔ)言數(shù)據(jù)類(lèi)型。
      類(lèi)型說(shuō)明符告訴編譯程序它返回什么類(lèi)型的數(shù)據(jù)。這個(gè)信息對(duì)于程序能否正確運(yùn)行關(guān)系極大,因?yàn)椴煌臄?shù)據(jù)有不同的長(zhǎng)度和內(nèi)部表示。
      返回非整型數(shù)據(jù)的函數(shù)被使用之前,必須把它的類(lèi)型向程序的其余部分說(shuō)明。若不這樣做,C語(yǔ)言的編譯程序就認(rèn)為函數(shù)是返回整型數(shù)據(jù)的函數(shù),調(diào)用點(diǎn)又在函數(shù)類(lèi)型說(shuō)明之前,編譯程序就會(huì)對(duì)調(diào)用生成錯(cuò)誤代碼。為了防止上述問(wèn)題的出現(xiàn),必須使用一個(gè)特別的說(shuō)明語(yǔ)句,通知編譯程序這個(gè)函數(shù)返回什么值。下例示出了這種方法。
      C語(yǔ)言函數(shù)說(shuō)明與返回值
      第一個(gè)函數(shù)的類(lèi)型說(shuō)明sum()函數(shù)返回浮點(diǎn)類(lèi)型的數(shù)據(jù)。這個(gè)說(shuō)明使編譯程序能夠?qū)um( ) 的調(diào)用產(chǎn)生正確代碼。
      函數(shù)類(lèi)型說(shuō)明語(yǔ)句的一般形式是:
      type_specifier function_name (; )
      即使函數(shù)使用形參,也不要將其寫(xiě)入說(shuō)明句。若未使用類(lèi)型說(shuō)明語(yǔ)句,函數(shù)返回的數(shù)據(jù)類(lèi)型可能與調(diào)用者所要求的不一致,其結(jié)果是難以預(yù)料的。如果兩者同處于一個(gè)文件中,編譯程序可以發(fā)現(xiàn)該錯(cuò)誤并停止編譯。如果不在同一個(gè)文件中,編譯程序無(wú)法發(fā)現(xiàn)這種錯(cuò)誤。類(lèi)型檢查僅在編譯中進(jìn)行,鏈接和運(yùn)行時(shí)均不檢查。因此,必須十分細(xì)心以確保絕不發(fā)生上述錯(cuò)誤。
      當(dāng)被說(shuō)明為整型的函數(shù)返回字符時(shí),這個(gè)字符值被轉(zhuǎn)換為整數(shù)。因?yàn)镃語(yǔ)言以不加說(shuō)明的方式進(jìn)行字符型與整型之間的數(shù)據(jù)轉(zhuǎn)換,因而多數(shù)情況下,返回字符值的函數(shù)并不是說(shuō)明為返回字符值,而是由函數(shù)的這種字符型向整型的缺省類(lèi)型轉(zhuǎn)換隱含實(shí)現(xiàn)的。
      4.1.2 返回語(yǔ)句
      返回語(yǔ)句r e t u r n有兩個(gè)重要用途。第一,它使得內(nèi)含它的那個(gè)函數(shù)立即退出,也就是使程序返回到調(diào)用語(yǔ)句處繼續(xù)進(jìn)行。第二,它可以用來(lái)回送一個(gè)數(shù)值。本章將說(shuō)明這兩個(gè)用途。
      1. 從函數(shù)返回
      函數(shù)可以用兩種方法停止運(yùn)行并返回到調(diào)用程序。第一種是在執(zhí)行完函數(shù)的最后一個(gè)語(yǔ)句之后,從概念上講,是遇到了函數(shù)的結(jié)束符“ }”(當(dāng)然這個(gè)花括號(hào)實(shí)際上并不會(huì)出現(xiàn)在目標(biāo)碼中,但我們可以這樣理解)。例如,下面的函數(shù)在屏幕上顯示一個(gè)字符串。
      C語(yǔ)言函數(shù)說(shuō)明與返回值
      一旦字串顯示完畢,函數(shù)就沒(méi)事可做了,這時(shí)它返回到被調(diào)用處。
      在實(shí)際情況中,沒(méi)有多少函數(shù)是以這種缺省方式終止運(yùn)行的。因?yàn)橛袝r(shí)必須送回一個(gè)值,大多數(shù)函數(shù)用return語(yǔ)句終止運(yùn)行,有時(shí)在函數(shù)中設(shè)立了多個(gè)終止點(diǎn)以簡(jiǎn)化函數(shù)、提高效率。切記,一個(gè)函數(shù)可以有多個(gè)返回語(yǔ)句。如下所示,函數(shù)在s 1、s 2相等時(shí)返回1,不相等時(shí)返回- 1。
      C語(yǔ)言函數(shù)說(shuō)明與返回值
      2. 返回值
      所有的函數(shù),除了空值類(lèi)型外,都返回一個(gè)數(shù)值(切記,空值是ANSI建議標(biāo)準(zhǔn)所做的擴(kuò)展,也許并不適合讀者手頭的C編譯程序)。該數(shù)值由返回語(yǔ)句確定。無(wú)返回語(yǔ)句時(shí),返回值是0。這就意味著,只要函數(shù)沒(méi)有被說(shuō)明為空值,它就可以用在任何有效的C語(yǔ)言表達(dá)式中作
      為操作數(shù)。這樣下面的表達(dá)式都是合法的C語(yǔ)言表達(dá)式。
      x = power (y);
      if (max (x,y) >100) printf(“greater;”)
      for (ch=getchar( ); isdigit (ch);) . . . ;
      可是,函數(shù)不能作為賦值對(duì)象,下列語(yǔ)句是錯(cuò)誤的:
      s w a p ( x ,y) =100;
      C編譯程序?qū)⒄J(rèn)為這個(gè)語(yǔ)句是錯(cuò)誤的,而且對(duì)含有這種錯(cuò)誤語(yǔ)句的程序不予編譯。
      所有非空值的函數(shù)都會(huì)返回一個(gè)值。我們編寫(xiě)的程序中大部分函數(shù)屬于三種類(lèi)型。第一種類(lèi)型是簡(jiǎn)單計(jì)算型—函數(shù)設(shè)計(jì)成對(duì)變量進(jìn)行運(yùn)算,并且返回計(jì)算值。計(jì)算型函數(shù)實(shí)際上是一個(gè)“純”函數(shù),例如sqr( )和sin( )。第二類(lèi)函數(shù)處理信息,并且返回一個(gè)值,僅以此表示
      處理的成功或失敗。例如write( ),用于向磁盤(pán)文件寫(xiě)信息。如果寫(xiě)操作成功了, write( )返回寫(xiě)入的字節(jié)數(shù),當(dāng)函數(shù)返回- 1時(shí),標(biāo)志寫(xiě)操作失敗。最后一類(lèi)函數(shù)沒(méi)有明確的返回值。實(shí)際上這類(lèi)函數(shù)是嚴(yán)格的過(guò)程型函數(shù),不產(chǎn)生值。如果讀者用的是符合A N S I建議標(biāo)準(zhǔn)的C編譯程序,那么所有這一類(lèi)函數(shù)應(yīng)當(dāng)被說(shuō)明為空值類(lèi)型。奇怪的是,那些并不產(chǎn)生令人感興趣的結(jié)果的函數(shù)卻無(wú)論如何也要返回某些東西。例如printf( )返回被寫(xiě)字符的個(gè)數(shù)。然而,很難找出一個(gè)真正檢查這個(gè)返回值的程序。因此,雖然除了空值函數(shù)以外的所有函數(shù)都返回一個(gè)值,我們卻不必非得去使用這個(gè)返回值。有關(guān)函數(shù)返回值的一個(gè)常見(jiàn)問(wèn)題是:既然這個(gè)值是被返回的,我是不是必須把它賦給某個(gè)變量?回答是:不必。如果沒(méi)有用它賦值,那它就被丟棄了。請(qǐng)看下面的程序,它使用了mul( )函數(shù)。mul( )函數(shù)定義為:int mul(int x, int y){……}
      C語(yǔ)言函數(shù)說(shuō)明與返回值
      在第一行, mul( )的返回值被賦予z,在第二行中,返回值實(shí)際上沒(méi)有賦給任何變量,但被printf( )函數(shù)所使用。最后,在第三行,返回值被丟棄不用,因?yàn)榧葲](méi)有把它賦給第一個(gè)變量,也沒(méi)有把它用作表達(dá)式中的一部分。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)