亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言函數說明與返回值

2019-11-17 05:23:06
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产xxx69麻豆国语对白| 热门国产精品亚洲第一区在线| 在线日韩中文字幕| 亚洲午夜小视频| 久久久免费观看视频| 成人淫片在线看| 欧美在线视频网站| 中国china体内裑精亚洲片| 国内成人精品视频| 亚洲v日韩v综合v精品v| 亚洲美女福利视频网站| 久热精品视频在线观看| 久久久久久久久国产精品| 91精品国产亚洲| 亚洲欧美色婷婷| 91av视频导航| 国产免费亚洲高清| 亚洲精品久久久久久下一站| 国产精品亚洲аv天堂网| 另类视频在线观看| 国产精品视频xxxx| 国产日韩在线看| 久久国产精品免费视频| 福利视频一区二区| 成人在线视频网| 久久久久亚洲精品国产| 成人黄色片在线| 久久久精品久久| 亚洲欧洲自拍偷拍| 91综合免费在线| 韩国精品久久久999| 久久久国产精彩视频美女艺术照福利| 亚洲欧美日韩直播| 91精品国产综合久久久久久蜜臀| 日韩电视剧在线观看免费网站| 欧美性xxxx极品hd满灌| 色综合色综合久久综合频道88| 亚洲成人激情在线| 国产精品夫妻激情| 精品国内产的精品视频在线观看| 中文字幕日韩电影| 国产欧美一区二区三区久久| 欧美性生交大片免网| 欧美一区二区色| 色综合久久88色综合天天看泰| 精品久久久久久电影| 91成人在线视频| 日韩中文字幕视频在线| 96国产粉嫩美女| 亚洲最大激情中文字幕| 色樱桃影院亚洲精品影院| 国产精品日日做人人爱| 日韩在线视频二区| 精品国偷自产在线视频| 欧美精品福利视频| 欧美一级成年大片在线观看| 欧美国产乱视频| 欧美日韩国产999| 久热精品在线视频| 中文字幕国产亚洲| 亚洲欧美制服中文字幕| 亲爱的老师9免费观看全集电视剧| 国产精品青青在线观看爽香蕉| 日韩免费在线免费观看| 九九久久久久99精品| 91国产精品电影| 精品国产91久久久| 欧美日韩亚洲91| 国产精品久久久久99| 91久久国产精品| 国产精品久久久久久中文字| 欧美日韩国产精品一区二区不卡中文| 亚洲码在线观看| 欧美性感美女h网站在线观看免费| 黑人精品xxx一区| 日韩国产欧美精品一区二区三区| 日韩欧美一区二区三区| 国产最新精品视频| 中文字幕不卡在线视频极品| 中文在线不卡视频| 亚洲精品一区二区久| 欧美日韩免费观看中文| 亚洲精品久久久久久久久| 亚洲国产高清自拍| 日韩成人在线视频网站| 精品magnet| 欧美激情欧美激情| 日韩精品在线第一页| 久久这里只有精品99| 中文字幕日韩专区| 久久99青青精品免费观看| 国产精品视频网站| 九九热最新视频//这里只有精品| 久久深夜福利免费观看| 国产成人精品一区二区在线| 国产精品情侣自拍| 久久精品亚洲94久久精品| 亚洲专区中文字幕| 欧美在线激情网| 国产成人精品久久二区二区91| 亚洲色在线视频| 国产精品99导航| 国产精品揄拍500视频| 国产精品美女主播在线观看纯欲| 欧美另类69精品久久久久9999| 91成人在线观看国产| 亚洲91精品在线观看| 色多多国产成人永久免费网站| 亚洲第一网站男人都懂| 亚洲日韩第一页| 成人性生交大片免费看小说| 亚洲欧美成人一区二区在线电影| 81精品国产乱码久久久久久| 亚洲a级在线观看| 国产精品偷伦视频免费观看国产| 久久久久久com| 777777777亚洲妇女| 国产精品一区二区三区久久久| 成人免费观看a| 国产在线拍揄自揄视频不卡99| 国产精品成人av性教育| 日韩中文视频免费在线观看| 亚洲综合日韩中文字幕v在线| 日本久久久久久久| 精品欧美一区二区三区| 亚洲欧洲黄色网| 欧美另类在线播放| 国产精品国产自产拍高清av水多| 久久久国产在线视频| 97视频在线观看免费高清完整版在线观看| 欧美色播在线播放| 国产免费成人av| 中文字幕日韩欧美在线视频| 久久视频在线视频| 国产精品入口免费视频一| 色综久久综合桃花网| 在线国产精品播放| 一区二区成人精品| 欧美性xxxx在线播放| 国自在线精品视频| xvideos亚洲人网站| 68精品久久久久久欧美| 国产成人aa精品一区在线播放| 欧美激情视频一区二区三区不卡| 国产97色在线|日韩| 国产精品福利网站| 成人精品视频99在线观看免费| 国产丝袜一区二区| 日韩一二三在线视频播| 欧美日韩精品在线视频| 国产精品白丝jk喷水视频一区| 欧美乱妇40p| 日韩免费观看视频| 久久综合88中文色鬼| 国产精品永久免费在线| 国产精品精品国产| 久久综合色88| 成人国内精品久久久久一区| 亚洲人成毛片在线播放| 国模极品一区二区三区| 亚洲成人激情视频| 青青精品视频播放| 欧美自拍大量在线观看| 亚洲精品乱码久久久久久按摩观|