歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

高素質(zhì)編程師湖南大學C語言課件第六章.ppt

  • 資源ID:6152887       資源大小:753.31KB        全文頁數(shù):56頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

高素質(zhì)編程師湖南大學C語言課件第六章.ppt

第六章函數(shù) 6 1概述模塊化程序設(shè)計基本思想 將一個大的程序按功能分割成一些小模塊 特點 各模塊相對獨立 功能單一 結(jié)構(gòu)清晰 接口簡單控制了程序設(shè)計的復雜性提高元件的可靠性縮短開發(fā)周期避免程序開發(fā)的重復勞動易于維護和功能擴充開發(fā)方法 自上向下 逐步分解 分而治之 C是模塊化程序設(shè)計語言 C程序結(jié)構(gòu) C是函數(shù)式語言必須有且只能有一個名為main的主函數(shù)C程序的執(zhí)行總是從main函數(shù)開始 在main中結(jié)束函數(shù)不能嵌套定義 可以嵌套調(diào)用 函數(shù)分類從用戶角度標準函數(shù) 庫函數(shù) 由系統(tǒng)提供用戶自定義函數(shù)從函數(shù)形式無參函數(shù)有參函數(shù) 使用庫函數(shù)應(yīng)注意 1 函數(shù)功能2 函數(shù)參數(shù)的數(shù)目和順序 及各參數(shù)意義和類型3 函數(shù)返回值意義和類型4 需要使用的包含文件 Ch7 201 c 6 2函數(shù)的定義一般格式 合法標識符 函數(shù)返回值類型缺省int型無返回值void 函數(shù)體 例有參函數(shù) 現(xiàn)代風格 intmax intx inty intz z x y x y return z 例無參函數(shù)printstar printf n 或printstar void printf n 例有參函數(shù) 傳統(tǒng)風格 intmax x y intx y intz z x y x y return z 6 3函數(shù)的返回值返回語句形式 return 表達式 或return表達式 或return 功能 使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中 同時把返值帶給調(diào)用函數(shù)說明 函數(shù)中可有多個return語句若無return語句 遇 時 自動返回調(diào)用函數(shù)若函數(shù)類型與return語句中表達式值的類型不一致 按前者為準 自動轉(zhuǎn)換 函數(shù)調(diào)用轉(zhuǎn)換void型函數(shù) 例無返回值函數(shù)voidswap intx inty inttemp temp x x y y temp printstar printf main inta a printstar printf d a 例函數(shù)帶回不確定值 輸出 10 voidprintstar printf main inta a printstar printf d a 編譯錯誤 例函數(shù)返回值類型轉(zhuǎn)換 main floata b intc scanf f f 6 4函數(shù)的調(diào)用調(diào)用形式函數(shù)名 實參表 說明 實參與形參個數(shù)相等 類型一致 按順序一一對應(yīng)實參表求值順序 因系統(tǒng)而定 TurboC自右向左 main inti 2 p p f i i printf d p intf inta intb intc if a b c 1 elseif a b c 0 elsec 1 return c 例參數(shù)求值順序 main inti 2 p p f i i printf d p intf inta intb intc if a b c 1 elseif a b c 0 elsec 1 return c 運行結(jié)果 0 運行結(jié)果 1 調(diào)用方式函數(shù)語句 例printstar printf Hello World n 函數(shù)表達式 例m max a b 2 函數(shù)參數(shù) 例printf d max a b m max a max b c 函數(shù)說明對被調(diào)用函數(shù)要求 必須是已存在的函數(shù)庫函數(shù) include用戶自定義函數(shù) 函數(shù)類型說明函數(shù)說明一般形式 函數(shù)類型函數(shù)名 形參類型 形參名 或函數(shù)類型函數(shù)名 作用 告訴編譯系統(tǒng)函數(shù)類型 參數(shù)個數(shù)及類型 以便檢驗函數(shù)定義與函數(shù)說明不同函數(shù)說明位置 程序的數(shù)據(jù)說明部分 函數(shù)內(nèi)或外 下列情況下 可不作函數(shù)說明若函數(shù)返值是char或int型 系統(tǒng)自動按int型處理被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前有些系統(tǒng) 如BorlandC 要求函數(shù)說明指出函數(shù)返值類型和形參類型 并且對void和int型函數(shù)也要進行函數(shù)說明 例函數(shù)說明舉例 6 5函數(shù)參數(shù)及其傳遞方式形參與實參形式參數(shù) 定義函數(shù)時函數(shù)名后面括號中的變量名實際參數(shù) 調(diào)用函數(shù)時函數(shù)名后面括號中的表達式 例比較兩個數(shù)并輸出大者 main inta b c scanf d d 說明 實參必須有確定的值形參必須指定類型形參與實參類型一致 個數(shù)相同若形參與實參類型不一致 自動按形參類型轉(zhuǎn)換 函數(shù)調(diào)用轉(zhuǎn)換形參在函數(shù)被調(diào)用前不占內(nèi)存 函數(shù)調(diào)用時為形參分配內(nèi)存 調(diào)用結(jié)束 內(nèi)存釋放 6 5函數(shù)參數(shù)及其傳遞方式形參與實參形式參數(shù) 定義函數(shù)時函數(shù)名后面括號中的變量名實際參數(shù) 調(diào)用函數(shù)時函數(shù)名后面括號中的表達式 例計算x的立方 includefloatcube floatx return x x x main floata product printf Pleaseinputvalueofa scanf f x 1 2 1 2 1 728 參數(shù)傳遞方式值傳遞方式方式 函數(shù)調(diào)用時 為形參分配單元 并將實參的值復制到形參中 調(diào)用結(jié)束 形參單元被釋放 實參單元仍保留并維持原值特點 形參與實參占用不同的內(nèi)存單元單向傳遞 例交換兩個數(shù) ch7 2 c includemain intx 7 y 11 printf x d ty d n x y printf swapped n swap x y printf x d ty d n x y swap inta intb inttemp temp a a b b temp 地址傳遞方式 函數(shù)調(diào)用時 將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參特點 形參與實參占用同樣的存儲單元 雙向 傳遞實參和形參必須是地址常量或變量 ch9 3 c swap p1 p2 int p1 p2 intp p p1 p1 p2 p2 p main inta b scanf d d 例交換兩個數(shù) 6 6函數(shù)的嵌套與遞歸調(diào)用嵌套調(diào)用C規(guī)定 函數(shù)定義不可嵌套 但可以嵌套調(diào)用函數(shù) 例求三個數(shù)中最大數(shù)和最小數(shù)的差值 includeintdif intx inty intz intmax intx inty intz intmin intx inty intz voidmain inta b c d scanf d d d Ch7 202 c intdif intx inty intz returnmax x y z min x y z intmax intx inty intz intr r x y x y return r z r z intmin intx inty intz intr r x y x y return r z r z 例用弦截法求方程根 運行情況 Inputx1 x2 2 6 Arootofequationis5 0000 遞歸調(diào)用定義 函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用 說明C編譯系統(tǒng)對遞歸函數(shù)的自調(diào)用次數(shù)沒有限制每調(diào)用函數(shù)一次 在內(nèi)存堆棧區(qū)分配空間 用于存放函數(shù)變量 返回值等信息 所以遞歸次數(shù)過多 可能引起堆棧溢出 intf intx inty z z f y return 2 z 例求n的階乘 ch7 8 c includeintfac intn intf if n 0 printf n 0 dataerror elseif n 0 n 1 f 1 elsef fac n 1 n return f main intn y printf Inputaintegernumber scanf d 例Hanoi問題 voidmove chargetone charputone printf c c n getone putone voidhanoi intn charone chartwo charthree if n 1 move one three else hanoi n 1 one three two move one three hanoi n 1 two one three main intm printf Inputthenumberofdisks scanf d D fengyi bkc power power c 6 7數(shù)組作為函數(shù)參數(shù)數(shù)組元素作函數(shù)實參 值傳遞 例兩個數(shù)組大小比較 n 0m 0k 0 a和b為有10個元素的整型數(shù)組比較兩數(shù)組對應(yīng)元素變量n m k記錄a i b i a i b i a i k 認為數(shù)組a b若n k 認為數(shù)組a b若n k 認為數(shù)組a b 數(shù)組名作函數(shù)參數(shù)地址傳遞在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組 且類型應(yīng)一致形參數(shù)組大小 多維數(shù)組第一維 可不指定形參數(shù)組名是地址變量 例求學生的平均成績 includefloataverage intstu 10 intn voidmain intscore 10 i floatav printf Input10scores n for i 0 i 10 i scanf d floataverage intstu 10 intn inti floatav total 0 for i 0 i n i total stu i av total n returnav 實參用數(shù)組名 形參用數(shù)組定義 intstu 例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較 includevoidswap2 intx inty intz z x x y y z main inta 2 1 2 swap2 a 0 a 1 printf a 0 d na 1 d n a 0 a 1 值傳遞 includevoidswap2 intx intz z x 0 x 0 x 1 x 1 z main inta 2 1 2 swap2 a printf a 0 d na 1 d n a 0 a 1 地址傳遞 例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較 例數(shù)組排序 簡單選擇排序 9 49 i 0 例數(shù)組排序 簡單選擇排序 13 68 i 1 i 8 例數(shù)組排序 簡單選擇排序 例求二維數(shù)組中最大元素值 intmax value intarray 3 4 inti j k max max array 0 0 for i 0 imax max array i j return max main inta 3 4 1 3 5 7 2 4 6 8 15 17 34 12 printf maxvalueis d n max value a 例求二維數(shù)組中各行元素之和 get sum row intx 3 intresult introw intcol inti j for i 0 i row i result i 0 for j 0 j col j result i x i j main inta 2 3 3 6 9 1 4 7 intsum row 2 row 2 col 3 i get sum row a sum row row col for i 0 i row i printf Thesumofrow d d n i 1 sum row i 18 12 6 8變量的存儲屬性概述變量是對程序中數(shù)據(jù)的存儲空間的抽象 編譯或函數(shù)調(diào)用時為其分配內(nèi)存單元 10 程序中使用變量名對內(nèi)存操作 變量的屬性數(shù)據(jù)類型 變量所持有的數(shù)據(jù)的性質(zhì) 操作屬性 存儲屬性存儲器類型 寄存器 靜態(tài)存儲區(qū) 動態(tài)存儲區(qū)生存期 變量在某一時刻存在 靜態(tài)變量與動態(tài)變量作用域 變量在某區(qū)域內(nèi)有效 局部變量與全局變量變量的存儲類型auto 自動型register 寄存器型static 靜態(tài)型extern 外部型變量定義格式 存儲類型 數(shù)據(jù)類型變量表 6 8變量的存儲屬性概述變量是對程序中數(shù)據(jù)的存儲空間的抽象 如 intsum autointa b c registerinti staticfloatx y 局部變量與全局變量局部變量 內(nèi)部變量定義 在函數(shù)內(nèi)定義 只在本函數(shù)內(nèi)有效說明 main中定義的變量只在main中有效不同函數(shù)中同名變量 占不同內(nèi)存單元形參屬于局部變量可定義在復合語句中有效的變量局部變量可用存儲類型 autoregisterstatic 默認為auto 全局變量 外部變量定義 在函數(shù)外定義 可為本文件所有函數(shù)共用有效范圍 從定義變量的位置開始到本源文件結(jié)束 及有extern說明的其它源文件 應(yīng)盡量少使用全局變量 因為 全局變量在程序全部執(zhí)行過程中占用存儲單元降低了函數(shù)的通用性 可靠性 可移植性降低程序清晰性 容易出錯 定義說明次數(shù) 只能1次可說明多次位置 所有函數(shù)之外函數(shù)內(nèi)或函數(shù)外分配內(nèi)存 分配內(nèi)存 可初始化不分配內(nèi)存 不可初始化 外部變量說明 extern數(shù)據(jù)類型變量表 外部變量定義與外部變量說明不同 若外部變量與局部變量同名 則外部變量被屏蔽 外部變量可用存儲類型 缺省或static floatmax min floataverage floatarray intn inti floatsum array 0 max min array 0 for i 1 imax max array i elseif array i min min array i sum array i return sum n main inti floatave score 10 Input ave average score 10 printf max 6 2f nmin 6 2f naverage 6 2f n max min ave externcharc1 c2 externcharc1 c2 運行結(jié)果 max 13 externinta b intmax intz z a b a b return z main printf max d max inta 13 b 8 運行結(jié)果 max 8 inti main voidprt for i 0 i 5 i prt voidprt for i 0 i 5 i printf c printf n 例外部變量副作用 運行結(jié)果 動態(tài)變量與靜態(tài)變量存儲方式靜態(tài)存儲 程序運行期間分配固定存儲空間動態(tài)存儲 程序運行期間根據(jù)需要動態(tài)分配存儲空間內(nèi)存用戶區(qū) 生存期靜態(tài)變量 從程序開始執(zhí)行到程序結(jié)束動態(tài)變量 從包含該變量定義的函數(shù)開始執(zhí)行至函數(shù)執(zhí)行結(jié)束 變量存儲類型 局部變量默認為auto型register型變量個數(shù)受限 且不能為long double float型局部static變量具有全局壽命和局部可見性局部static變量具有可繼承性extern不是變量定義 可擴展外部變量作用域 例文件file1 cinta main f2 f1 f1 autointb f2 f2 staticintc 例auto變量的作用域 main intx 1 voidprt void intx 3 prt printf 2ndx d n x printf 1stx d n x voidprt void intx 5 printf 3thx d n x 運行結(jié)果 3thx 52ndx 31stx 1 main voidincrement void increment increment increment voidincrement void intx 0 x printf d n x 例局部靜態(tài)變量值具有可繼承性 運行結(jié)果 111 main voidincrement void increment increment increment voidincrement void staticintx 0 x printf d n x 運行結(jié)果 123 例變量的壽命與可見性 includeinti 1 main staticinta registerintb 10 intc 0 printf MAIN n printf i da d b dc d n i a b c c c 8 other printf MAIN n printf i da d b dc d n i a b c i i 10 other other staticinta 2 staticintb intc 10 a a 2 i i 32 c c 5 printf OTHER n printf i da d b dc d n i a b c b a Main i 1a 0b 10c 0 Other i 33a 4b 0c 15 Main i 33a 0b 10c 8 Other i 75a 6b 4c 15 8 4 33 15 4 43 6 75 15 6 main voidgx gy externintx y printf 1 x d ty d n x y y 246 gx gy voidgx externintx y x 135 printf 2 x d ty d n x y intx y voidgy printf 3 x d ty d n x y 例用extern擴展外部變量作用域 運行結(jié)果 1 x 0y 02 x 135y 2463 x 135y 246 例引用其它文件中的外部變量 例引用其它文件中的變量 輸出a b和a的m次方

注意事項

本文(高素質(zhì)編程師湖南大學C語言課件第六章.ppt)為本站會員(xin****828)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!