函數分類、定義課件講解_第1頁
函數分類、定義課件講解_第2頁
函數分類、定義課件講解_第3頁
函數分類、定義課件講解_第4頁
函數分類、定義課件講解_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第6章函數1.熟練掌握用戶函數的結構、設計方法和調用方法;2.熟練掌握函數調用中數據傳遞的幾種方法;3.會設計簡單的函數和函數的嵌套調用學習目標主要內容函數的概念函數調用中數據傳遞的方法函數調用全局變量和局部變量

6.1函數概念一.概述一個C程序可通過一個主函數和若干個子函數實現模塊化結構。在功能上,由主函數調用其它函數,其它函數也可以互相調用。main()

函數A(形式參數表)

函數B(形式參數表){{{

……;……;……;

調用函數A;調用函數B;……;

……;……;}}}

返回主調函數A()

返回主調函數main()說明:

(1)一個源程序文件由一個或多個函數組成。C語言以源文件為單位進行編譯,而不是以函數為單位進行編譯。(2)C程序的執行從main()函數開始,如果在main()函數中調用了其它函數,在調用結束后,流程最后必須回到主調函數,在main()函數中結束整個程序的運行。

(3)所有的函數都是平行的,函數之間只有調用關系,—個函數并不從屬于另一函數。

二.函數的分類1.庫函數和用戶自定義的函數(從使用的角度分類)

庫函數也叫標準函數,這是由系統提供的,用戶可直接調用的函數。例如:printf()、scanf()、sqrt()、pow()

、strcmp()都是C語言的標準函數。用戶自定義的函數就是用戶根據需要,自行設計的函數。2.無參函數和有參函數(從函數的形式分類)

函數的參數,就是被調用的函數運行時,由主調函數提供的數據。如果被調用的函數運行時,不需要由主調函數提供數據,則稱之為無參函數,否則就稱為有參函數。

【例6-1】無參函數的例子。#include<stdio.h>voidoutput(){charc[10];printf("PleaseInputAWord:");scanf("%s",c);printf("%s\n",strupr(c));}voidmain(){inti;for(i=0;i<3;i++)output();printf("THEEND\n");}【例6-2】有參函數的例子。#include<stdio.h>intmax(intx,inty){return(x>y?x:y);}voidmain(){inta,b,c;printf("PleaseInputtwointegers:\n");scanf("%d,%d",&a,&b);printf("Maxis%d",max(a,b);}

6.2函數的定義調用函數必須遵循“定義在先、使用在后”的原則。函數定義的格式:類型說明符函數名(類型說明符形參變量1,類型說明符形參變量2,…)

{

語句部分

}函數首部

函數體

形參表

函數名由用戶確定,但必須遵循與定義變量名相同的規則。函數名前面的類型說明符用以指出函數調用后,返回結果的數據類型,稱之為函數類型,在缺省的情況下,默認的函數類型為int型。6.3函數參數和函數的值一.形式參數和實際參數形式參數和實際參數具有的特點和關系:(1)在定義函數時指定的形參變量,只有在函數被調用時才被分配內存單元。在調用結束后,形參所占的內存單元也隨即被釋放。

該語句是無法執行的,在結束對max()的調用后,形參變量所占用的存儲單元已被釋放,在這里,變量名x和y是無意義的。例如:intmax(intx,inty){return(x>y?x:y);}

voidmain(){inta,b,c;printf("PleaseInputtwointegers:\n");scanf("%d,%d",&a,&b);printf("Maxis%d",max(a,b);printf("x=%d,y=%d",x,y);}(2)形參只能是變量,而實參必須是具有確定值的表達式。

voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(10,a+b);printf("MAX=%d",max(a-b,a*b));}實參為常量10和表達式a+b實參為表達式a-b和a+b執行該語句后,變量a、b均已有了確定的值例如:intmax(intx,inty){return(x>y?x:y);}

(3)調用函數時實參與形參的個數、類型和先后順序應當保持一致。【例6-3】實參與形參的個數、類型和先后順序對函數調用的影響。#include<stdio.h>intadd(charx,inty){intz;return(x+y);}voidmain(){chara;inti;printf("PleaseInputAnIntegerNumberandacharacter");scanf("%d,%c",&i,&a);printf("Thefirstresultis%d\n",add(a,i));printf("Thesecondresultis%d\n",add(i,a));}正確的調用

錯誤的調用

這個return語句永遠也不會被執行二.函數的返回值函數的返回值就是通過函數調用,主調函數從被調用函數中的return語句獲得的一個確定的值。return語句的格式:return(表達式);或return表達式;

return語句中表達式的值就是被返回的值。注意:

(1)一個函數中可以包含一個以上的return語句,但一旦執行了其中任何一個return語句,就結束該函數的調用。所以,每次調用函數以后,只能通過return語句返回一個值。

例如:

intf(intx,inty){return(x+y);ret

溫馨提示

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

最新文檔

評論

0/150

提交評論