(中職)編程語言基礎(chǔ)-C語言模塊5教學(xué)課件_第1頁
(中職)編程語言基礎(chǔ)-C語言模塊5教學(xué)課件_第2頁
(中職)編程語言基礎(chǔ)-C語言模塊5教學(xué)課件_第3頁
(中職)編程語言基礎(chǔ)-C語言模塊5教學(xué)課件_第4頁
(中職)編程語言基礎(chǔ)-C語言模塊5教學(xué)課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、YCF正版可修改PPT(中職)編程語言基礎(chǔ)C語言模塊5教學(xué)課件模塊5函數(shù)任務(wù)1 函數(shù)概述任務(wù)2 函數(shù)的調(diào)用任務(wù)3 函數(shù)的參數(shù)傳遞任務(wù)4 函數(shù)的返回與返回值的傳遞任務(wù)5 用數(shù)組作為函數(shù)參數(shù)任務(wù)6 字符串參數(shù)的傳遞任務(wù)7 變量的作用域和生存期任務(wù)1函數(shù)概述5.1.1 函數(shù)定義函數(shù)定義的一般形式為:(1)類型是函數(shù)的類型,也是該函數(shù)返回值的數(shù)據(jù)類型。(2)函數(shù)名是標(biāo)識(shí)符,可由用戶指定。(3)參數(shù)表部分可有可無。(4)函數(shù)中由最外一層”括起的部分為函數(shù)體,包括變量說明和語句,其中變量說明可有可無,語句也可有可無。下一頁返回任務(wù)1函數(shù)概述【例5-1】函數(shù)定義的一個(gè)實(shí)例。上一頁返回下一頁任務(wù)1函數(shù)概述5.

2、1.2 函數(shù)的說明在函數(shù)中調(diào)用某函數(shù)之前應(yīng)對(duì)被調(diào)用函數(shù)進(jìn)行說明,這與使用變量之前要先進(jìn)行變量說明是一樣的。在調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)作說明的目的是使編譯系統(tǒng)知道被調(diào)用函數(shù)返回值的類型,以便在調(diào)用函數(shù)中按此種類型對(duì)返回值作相應(yīng)的處理。對(duì)被調(diào)用函數(shù)的說明也有兩種格式,一種為傳統(tǒng)方式,其一般格式為:類型說明符被調(diào)用函數(shù)名();這種格式只給出函數(shù)返回值的類型,被調(diào)用函數(shù)名及一個(gè)空括號(hào)。由于在括號(hào)中沒有任何參數(shù)信息,因此不便于編譯系統(tǒng)對(duì)錯(cuò)誤進(jìn)行檢查,易發(fā)生錯(cuò)誤。上一頁返回下一頁任務(wù)1函數(shù)概述另一種為現(xiàn)代方式,其一般格式為:類型說明符被調(diào)用函數(shù)名(類型形參,類型形參)或類型說明符被調(diào)用函數(shù)名(類型,類型);

3、現(xiàn)代格式的括號(hào)內(nèi)給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進(jìn)行檢錯(cuò),以防止可能出現(xiàn)的錯(cuò)誤。C語言中規(guī)定在以下幾種情況時(shí),可以省去調(diào)用函數(shù)中對(duì)被調(diào)用函數(shù)的說明。(1)如果被調(diào)用函數(shù)的返回值是整型或字符型時(shí),可以不對(duì)被調(diào)用函數(shù)作說明,而直接調(diào)用。這時(shí)系統(tǒng)將自動(dòng)對(duì)被調(diào)用函數(shù)返回值按整型處理。(2)當(dāng)被調(diào)用函數(shù)的函數(shù)定義出現(xiàn)在調(diào)用函數(shù)之前時(shí),在調(diào)用函數(shù)中也可以不對(duì)被調(diào)用函數(shù)作說明而直接調(diào)用。上一頁返回下一頁任務(wù)1函數(shù)概述(3)如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個(gè)函數(shù)的類型,則在以后的各調(diào)用函數(shù)中,可不再對(duì)被調(diào)用函數(shù)作說明。例如:上一頁返回下一頁任務(wù)1函數(shù)概述5.1.3 函數(shù)的介

4、類從用戶的使用角度看,函數(shù)有兩種:標(biāo)準(zhǔn)函數(shù)(或庫函數(shù))和用戶自定義函數(shù)。1. 標(biāo)準(zhǔn)函數(shù)(或庫函數(shù))庫函數(shù)是系統(tǒng)已經(jīng)編好的函數(shù),一個(gè)庫函數(shù)就能實(shí)現(xiàn)一個(gè)特定的功能。C語言包括了豐富的庫函數(shù),詳細(xì)情況見附錄。關(guān)于庫函數(shù)有以下幾點(diǎn)說明。調(diào)用標(biāo)準(zhǔn)庫函數(shù)時(shí)要使用include命令,例如:#include 對(duì)于每一類庫函數(shù),附錄中都列出了在調(diào)用該類庫函數(shù)時(shí),用戶在源程序include命令中應(yīng)該包含的頭文件名。上一頁返回下一頁任務(wù)1函數(shù)概述調(diào)用數(shù)學(xué)庫函數(shù)時(shí),要用到以下的命令:調(diào)用字符(串)函數(shù)時(shí),要用到以下的命令:2. 用戶自己定義的函數(shù)這種函數(shù)由用戶自己編寫,主要用于執(zhí)行特定的功能,縮寫用戶自定義函數(shù)是使用

5、C語言進(jìn)行程序設(shè)計(jì)的重點(diǎn)。此外,從函數(shù)的形式來看,函數(shù)還可以分為無參函數(shù)和有參函數(shù)兩種,這兩種函數(shù)的詳細(xì)情況將在后面介紹。上一頁返回任務(wù)2函數(shù)的調(diào)用5.2.1 函數(shù)調(diào)用的方式在C語言中,可以用以下幾種方式調(diào)用函數(shù):函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。函數(shù)語句:函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語句。函數(shù)實(shí)參:函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。返回下一頁任務(wù)2函數(shù)的調(diào)用5.2.2 函數(shù)的嵌套調(diào)用C語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是

6、平行的,不存在上一級(jí)函數(shù)和下一級(jí)函數(shù)的問題。但是C語言允許在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其他函數(shù)。這與其他語言的子程序嵌套的情形是類似的。其關(guān)系可如圖5-1所示。圖5-1表示了兩層嵌套的情形。其執(zhí)行過程是:執(zhí)行main函數(shù)中調(diào)用a函數(shù)的語句時(shí),即轉(zhuǎn)去執(zhí)行a函數(shù),在a函數(shù)中調(diào)用b函數(shù)時(shí),又轉(zhuǎn)去執(zhí)行b函數(shù),b函數(shù)執(zhí)行完畢返回a函數(shù)的斷點(diǎn)繼純執(zhí)行.a函數(shù)執(zhí)行完畢返回main函數(shù)的斷點(diǎn)繼純執(zhí)行。上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用用圖5-2表示求函數(shù)值s的嵌套調(diào)用。上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用5.2.3 函數(shù)的

7、遞歸調(diào)用一個(gè)函數(shù)在它的函數(shù)體內(nèi)直接或間接調(diào)用它自身稱為遞歸調(diào)用。這種函數(shù)稱為遞歸函數(shù)。c語言允許函數(shù)的遞歸調(diào)用。遞歸調(diào)用有直接遞歸和間接遞歸兩種。所謂直接遞歸是指函數(shù)f直接調(diào)用自身,即主調(diào)函數(shù)也是被調(diào)函數(shù)。而間接遞歸是指函數(shù)f1通過另一個(gè)函數(shù)f2去掉用f1。直接遞歸和間接遞歸調(diào)用的示意圖如圖5-3和圖5-4所示。上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用例如,有函數(shù)f如下上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用【例5-3】用遞歸法計(jì)算n!。 用遞歸法計(jì)算n!可用下述公式表示: 按公式可編程如下:上一頁返回下一頁任務(wù)2函數(shù)的調(diào)用上述遞歸調(diào)用和回推賦值借助于堆棧形象地用圖5 -5表示。上一頁返回任務(wù)3函數(shù)的參數(shù)傳遞

8、5.1.3 參數(shù)的值傳送方式上面已介紹,c語言本身是采用傳值方式傳送參數(shù)的。在函數(shù)被調(diào)用時(shí),系統(tǒng)為每個(gè)形式參數(shù)變量分配存儲(chǔ)單元,同時(shí)將對(duì)應(yīng)的實(shí)際參數(shù)值存儲(chǔ)在這些單元里。也就是說,這些單元中的初值就是對(duì)應(yīng)實(shí)參的值,所以,被調(diào)用函數(shù)中的形參變量所接收的是實(shí)參的一個(gè)臨時(shí)副本,而不是實(shí)參的地址。使用傳值方式時(shí),盡管函數(shù)內(nèi)形參變量的值在函數(shù)調(diào)用過程中發(fā)生變化,但它對(duì)應(yīng)的實(shí)參變量的值卻不受任何影響,這是因?yàn)閷?shí)參變量和形參變量所分配的存儲(chǔ)單元是不同的。調(diào)用函數(shù)時(shí),形參的值只是被復(fù)制到實(shí)參所占用的內(nèi)存單元中,所以實(shí)參變量值的變化也就不會(huì)造成形參變量值的改變。所以,形參變量實(shí)際是一個(gè)局部變量,僅在定義它的函數(shù)內(nèi)

9、有意義,一旦函數(shù)執(zhí)行完畢,形參變量所占有存儲(chǔ)單元中的值也不再保留。請(qǐng)看下面的例題。上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞5.3.2 參數(shù)的地址傳送方式經(jīng)過上面的討論可以知道,采用傳值方式傳送參數(shù),不影響實(shí)參變量的值,這對(duì)于某些問題來說是十分必要的。如果在調(diào)用函數(shù)時(shí)需要改變實(shí)參變量的值,則利用傳值方式傳送參數(shù)是難以達(dá)到改變實(shí)參變量的目的,請(qǐng)看下面的數(shù)據(jù)交換函數(shù)。上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞【例5-5】編寫一個(gè)數(shù)據(jù)交換函數(shù)swap(a,b),并調(diào)用該 函數(shù)將x,y兩個(gè)變量的值進(jìn)行交換。 程序運(yùn)行結(jié)果上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞從結(jié)果可知,變量x,y

10、的值并沒有被交換,還是與輸入時(shí)相同。在調(diào)用函數(shù)swap(x,y)時(shí),只是將變量x,y的值傳給函數(shù)中的參數(shù)變量a,b,其實(shí)交換的只是形參變量a和b,并沒有將x,y的值進(jìn)行交換。在這個(gè)例子中,語句”swap ( x , Y )”;等價(jià)于下面的復(fù)合語句:上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞要達(dá)到X,y值互換的目的,必須采取傳址方式傳送參數(shù),此種方式要求傳送實(shí)際參數(shù)的地址而不是它的值。在這種情況下,形參必須是能接收地址的指針變量,實(shí)際參數(shù)為地址量,因此,如果將上例中的函數(shù)swap()改寫為:上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳遞而函數(shù)調(diào)用語句改寫為運(yùn)行程序,則結(jié)果成為:上一頁返回下一頁任務(wù)3函數(shù)的參數(shù)傳

11、遞由于Pa,Pb指針中分別存放了x,y的地址,所以*pa,*pb分別代表x,y,這就達(dá)到了x,y互換的目的,此時(shí)調(diào)用語句”swap( &x,&y)”;的執(zhí)行等價(jià)于下面的復(fù)合語句:上一頁返回任務(wù)4函數(shù)的返回與返回值的傳遞5.4.1 無值返回為了明確函數(shù)不返回值,可用關(guān)鍵字void定義函數(shù)。例如在無返回值的函數(shù)定義中也可以使用return語句進(jìn)行返回,此時(shí),return語句中不帶返回值。返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞【例5-6】定義一個(gè)函數(shù),將三個(gè)不相等的整數(shù)按照它們的值由大到小的順序輸出來。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞上一

12、頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞5.4.2 使用return語句傳遞返回值當(dāng)實(shí)參將參數(shù)值傳給形參后,即可執(zhí)行該函數(shù)應(yīng)的操作,函數(shù)的執(zhí)行情況主要有以下兩種。在函數(shù)中完成一些打印操作和信息顯示輸出等任務(wù),不需要返回結(jié)果給主調(diào)函數(shù),這類函數(shù)的類型為void 。在執(zhí)行相應(yīng)的函數(shù)操作后,還要將函數(shù)運(yùn)行結(jié)果返回給主調(diào)函數(shù),主調(diào)函數(shù)使用返回值作進(jìn)一步運(yùn)算。這類函數(shù)帶有返回值。要使1個(gè)函數(shù)返回1個(gè)確定的值,就必須要用return語句。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞1. return語句的使用格式在以前的例子中已經(jīng)用到了return語句,return語句的格式如下:上一頁返回下一頁任務(wù)

13、4函數(shù)的返回與返回值的傳遞2. 使用說明對(duì)return語句的用法作如下說明。return語句中的“表達(dá)式”的值就是函數(shù)返回給主調(diào)函數(shù)的值。當(dāng)程序執(zhí)行到return語句時(shí),立即退出函數(shù)的執(zhí)行返回主調(diào)函數(shù)。一個(gè)函數(shù)中可以 包含多個(gè)return語句,但是在1次函數(shù)調(diào)用中只會(huì)有1個(gè)被執(zhí)行。return語句中也可以不包含表達(dá)式,其作用只是使流程返回主調(diào)函數(shù),這時(shí)并不返回確定的值。如果函數(shù)不需要返回值,則可以在定義函數(shù)時(shí)使用void類型。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞函數(shù)要返回值必須具有1個(gè)確定的類型。例如1個(gè)函數(shù)可以返回一個(gè)整型、實(shí)型或字符型的數(shù)值。這主要在函數(shù)定義時(shí)在通過類型標(biāo)識(shí)符指定

14、。函數(shù)的返回值必須與函數(shù)定義的“類型標(biāo)識(shí)符”一致或者兼容,若類型不一致,則以函數(shù)的類型標(biāo)識(shí)為準(zhǔn)進(jìn)行轉(zhuǎn)換,返回1個(gè)與函數(shù)的類型標(biāo)識(shí)符一致的值。建議盡量使其一致,避免系統(tǒng)的自動(dòng)轉(zhuǎn)換和人為所造成的數(shù)據(jù)誤差或者錯(cuò)誤。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞注意:函數(shù)的“類型標(biāo)識(shí)符”與函數(shù)的參數(shù)類型沒有必然的聯(lián)系,例如:上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞 3. 應(yīng)用舉例【例5-7】試編程打印1001000之間的水仙花數(shù)。水仙花各位數(shù)的立方和就等于該數(shù)。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞【例5-8】從鍵盤上輸入一個(gè)字符,將其中大于

15、字符的字符輸出。上一頁返回下一頁任務(wù)4函數(shù)的返回與返回值的傳遞【例5 -9】從鍵盤上輸入兩個(gè)實(shí)數(shù),然后比較這兩個(gè)實(shí)數(shù)和與積的大小,輸出其中較大者。上一頁返回任務(wù)5用數(shù)組作為函數(shù)參數(shù)5.5.1 數(shù)組元素作為函數(shù)參數(shù)數(shù)組元素的使用與普通變量相同,因此數(shù)組元素作為函數(shù)參數(shù)和簡單變量作為函數(shù)參數(shù)的用法完全相同,也是單向值傳遞?!纠?-10】統(tǒng)計(jì)30名學(xué)生成績分布情況。大于等于90分為優(yōu),大于等于80分為良,大于等于70分為中,大于等于60分為及格,小于60分為差。返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)上一頁返回下一頁任務(wù)5用數(shù)

16、組作為函數(shù)參數(shù)5.5.2 數(shù)組名作為函數(shù)參數(shù)數(shù)組名作為函數(shù)參數(shù)時(shí),需要分別在被調(diào)函數(shù)與主調(diào)函數(shù)中說明數(shù)組類型,并且要求實(shí)參與形參數(shù)組的類型相同,維數(shù)相同。在進(jìn)行參數(shù)傳遞時(shí)是“地址傳遞”,也就是說,將實(shí)參數(shù)組的起始地址傳遞給了形參數(shù)組,而不是將實(shí)參數(shù)組中的每一個(gè)元素一一傳遞給形參數(shù)組元素。1. 一維數(shù)組名作為函數(shù)參數(shù)一維數(shù)組名作為函數(shù)參數(shù)的語法格式如下:上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)以下為在主函數(shù)中向,disp()傳遞一個(gè)一維數(shù)組的語法:上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)2. 二維數(shù)組名作為函數(shù)參數(shù)二維數(shù)組名作為函數(shù)參數(shù)的語法格式如下:上一

17、頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)以下為在主函數(shù)中向,disp()傳遞一個(gè)二維數(shù)組的語法:上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)【例5-11】編程完成對(duì)一個(gè)3 x4矩陣的輸入,并將該矩陣乘以2輸出,要求輸入和輸出在不同的函數(shù)中進(jìn)行。上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)上一頁返回下一頁任務(wù)5用數(shù)組作為函數(shù)參數(shù)數(shù)組名作為函數(shù)參數(shù)時(shí)應(yīng)該注意的幾個(gè)問題:(1)實(shí)參和形參類型要一致,包括維數(shù)相同、元素類型相同。(2)實(shí)參數(shù)組和形參數(shù)組大小可以不一致,如果要得到實(shí)參的全部元素,則形參數(shù)組應(yīng)大于等于實(shí)參數(shù)組大小。(3)一維數(shù)組作參數(shù)時(shí),形參可不指定大小,在定義形參數(shù)組時(shí),只需在數(shù)組名后跟一個(gè)空的方括

18、號(hào);對(duì)于二維和多維數(shù)組,其形參中只有第1維的大小可以省略,其余維數(shù)必須給出。(4)數(shù)組名作為函數(shù)參數(shù),實(shí)際上傳遞的是數(shù)組的起始地址,這樣實(shí)參和形參共享一段內(nèi)存空間。上一頁返回任務(wù)6字符串參數(shù)的傳遞【例5-12】編寫求字符串長度的函數(shù),并利用它求字符串的長度。返回下一頁任務(wù)6字符串參數(shù)的傳遞上一頁返回任務(wù)7變量的作用域和生存期5.7.1 變量的作用域和生存期在C語言程序中,不同函數(shù)中的變量可以同名,這些同名的變量分別代表內(nèi)存中不同的存儲(chǔ)空間,因此,編寫程序時(shí)應(yīng)注意區(qū)分這些變量,仔細(xì)分析在程序運(yùn)行某個(gè)具體時(shí)刻是哪個(gè)具體的變量在起作用(如例5-13) 返回下一頁任務(wù)7變量的作用域和生存期上一頁返回下

19、一頁任務(wù)7變量的作用域和生存期1. 局部變量局部變量也稱內(nèi)部變量,是指在函數(shù)內(nèi)部或復(fù)合語句內(nèi)定義的變量,它只在該函數(shù)或復(fù)合語句內(nèi)有效。也就是說,只有在包含變量說明的函數(shù)內(nèi)部或復(fù)合語句中,才能使用被說的變量,在此之外就不能使用這些變量。如例5-14上一頁返回下一頁任務(wù)7變量的作用域和生存期上一頁返回下一頁任務(wù)7變量的作用域和生存期說明:main函數(shù)中定義的局部變量,只能main在函數(shù)中起作用,在其他函數(shù)中不起作用。同樣,在main函數(shù)中也不能直接使用其他函數(shù)定義的局部變量。函數(shù)的形參變量是局部變量,只在被調(diào)用函數(shù)內(nèi)有效。允許在不同的函數(shù)中使用相同的變量名,分別代表不同的對(duì)象,分配不同的存儲(chǔ)單元,

20、互不干擾。在復(fù)合語句中可定義變量,其作用域只在該復(fù)合語句范圍內(nèi)。上一頁返回下一頁任務(wù)7變量的作用域和生存期1. 全局變量全局變量也稱外部變量,是指在函數(shù)之外定義的變量,可以為本文件中其他函數(shù)所共用,其有效范圍是從定義變量的位置開始到本源文件結(jié)束。如例5-15上一頁返回下一頁任務(wù)7變量的作用域和生存期上一頁返回下一頁任務(wù)7變量的作用域和生存期說明:全局變量可加強(qiáng)函數(shù)模塊之間的數(shù)據(jù)聯(lián)系,但過度使用全局變量將降低函數(shù)的獨(dú)立性,如果在一個(gè)函數(shù)中改變了全局變量的值,就會(huì)影響到其他函數(shù),從模塊化程序設(shè)計(jì)的觀點(diǎn)來看這是不利的,因此在程序中應(yīng)盡量少使用全局變量。由于函數(shù)調(diào)用只能帶回一個(gè)返回值,有時(shí)可以利用全局

21、變量從被調(diào)函數(shù)處得到一個(gè)以上的返回值。全局變量如果未初始化,系統(tǒng)將自動(dòng)賦值為0。在同一源文件中,允許全局變量和局部變量同名。在局部變量的作用域內(nèi),全局變量將暫時(shí)被屏蔽而不起作用。上一頁返回下一頁任務(wù)7變量的作用域和生存期例5-16程序如下:上一頁返回下一頁任務(wù)7變量的作用域和生存期上一頁返回下一頁任務(wù)7變量的作用域和生存期5.7.2 變量的存儲(chǔ)類別在C語言中,變量和函數(shù)有兩個(gè)屬性:即數(shù)據(jù)類型和存儲(chǔ)類別。變量的存儲(chǔ)類別是指變量在內(nèi)存中的存儲(chǔ)方法。c語言系統(tǒng)將變量的存儲(chǔ)類別分成了4種:自動(dòng)變量(auto)、靜態(tài)變量(static)、寄存器變量(register)和外部變量(extern )1. 自

22、動(dòng)變量出現(xiàn)范圍:出現(xiàn)在函數(shù)內(nèi)部。判別方法:定義在函數(shù)內(nèi)部并且缺省存儲(chǔ)類別說明的變量或在直接用auto顯式說明的變量。作用域:定義該變量的函數(shù)。生存期:定義該變量的函數(shù)被執(zhí)行的期間。上一頁返回下一頁任務(wù)7變量的作用域和生存期自動(dòng)變量完整的定義形式如下:Auto 類型說明符 變量名;注意:自動(dòng)變量一般都會(huì)省略auto,函數(shù)中的大多數(shù)變量都是自動(dòng)變量。例如:上一頁返回下一頁任務(wù)7變量的作用域和生存期形參和復(fù)合語句里定義的變量是自動(dòng)變量。自動(dòng)變量一旦被定義說明,則只能在說明該變量的函數(shù)或復(fù)合語句中才有效,離開了上述區(qū)域則無效。自動(dòng)變量的生存期只限于相應(yīng)函數(shù)或復(fù)合語句被執(zhí)行的過程,若變量是定義在復(fù)合語句

23、內(nèi),則其生存期為該復(fù)合語句被執(zhí)行的期間。上一頁返回下一頁任務(wù)7變量的作用域和生存期例5-17程序如下:上一頁返回下一頁任務(wù)7變量的作用域和生存期程序運(yùn)行結(jié)果如下:1 1上一頁返回下一頁任務(wù)7變量的作用域和生存期2. 靜態(tài)變量(static變量)靜態(tài)變量分成靜態(tài)局部變量和靜態(tài)全局變量。靜態(tài)變量的定義形式如下:Static 類型說明符 變量名 (1)靜態(tài)局部變量 出現(xiàn)范圍:可以出現(xiàn)在函數(shù)內(nèi)部。 判別方法:定義在函數(shù)內(nèi)部,并且用static顯式說明。 作用域:定義該變量的函數(shù)。 生存期:整個(gè)程序的執(zhí)行期。上一頁返回下一頁任務(wù)7變量的作用域和生存期例5-18用靜態(tài)變量編程,求15的階乘。程序如下:上一

24、頁返回下一頁任務(wù)7變量的作用域和生存期注意靜態(tài)局部變量的作用域在定義該變量的函數(shù)內(nèi),生存期是整個(gè)程序的執(zhí)行期。要改變?cè)撟兞康闹?,必須在定義該變量的函數(shù)內(nèi)部完成,相對(duì)于外部變量而言,靜態(tài)變量更安全,起到了信息屏蔽的作用,因此,靜態(tài)局部變量的應(yīng)用比較廣泛。靜態(tài)變量初始化語句只在第一次調(diào)用該函數(shù)時(shí)才執(zhí)行,以后每次調(diào)用該函數(shù)不再執(zhí)行初始化語句。靜態(tài)變量如果沒有初始化,則系統(tǒng)自動(dòng)賦初值0或Null 上一頁返回下一頁任務(wù)7變量的作用域和生存期例5-19程序如下:上一頁返回下一頁任務(wù)7變量的作用域和生存期(2)靜態(tài)全局變量出現(xiàn)范圍:一般出現(xiàn)在函數(shù)的外部。判別方法:定義在函數(shù)外部,并且用static顯式說明。作用域:從定義該變量的位置直至本源文件結(jié)束。生存期:整個(gè)程序的執(zhí)行期。在程序設(shè)計(jì)中希望某些外部變量只限于被本文件引用,而不能被其他文件引用,這時(shí)可以使用靜態(tài)全局變量。上一頁返回下一頁任務(wù)7變量的作用域和生存期例5-20上一頁返回下一頁任務(wù)7變量的作用域和生存期3.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論