課件試卷及上機(jī)題答案_第1頁(yè)
課件試卷及上機(jī)題答案_第2頁(yè)
課件試卷及上機(jī)題答案_第3頁(yè)
課件試卷及上機(jī)題答案_第4頁(yè)
課件試卷及上機(jī)題答案_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

doublecylinder(doubler,doubleh){…returnresult;}intmain(void){doublecylinder(doubler,doubleh);…volume=cylinder(r,h);….return0;};1)函數(shù)原型聲明2)函數(shù)調(diào)用3)函數(shù)定義函數(shù)的定義和調(diào)用5.3變量與函數(shù)5.3.1局部變量和全局變量

——變量的作用范圍5.3.2變量生命周期和靜態(tài)局部變量

——變量的存儲(chǔ)狀態(tài)5.3.1局部變量和全局變量1.局部變量①在函數(shù)內(nèi)定義的變量(包括形參)作用范圍:本函數(shù)內(nèi)部②定義在復(fù)合語(yǔ)句內(nèi)的變量作用范圍:復(fù)合語(yǔ)句內(nèi)部2.全局變量 在函數(shù)以外定義的變量,不從屬于任一函數(shù)作用范圍:從定義處到源文件結(jié)束(包括各函數(shù))aaaf1()f2()inta;inta;例5-6局部變量的作用范圍#include<stdio.h>intmain(void){inta;scanf(“%d”,&a);if(a==1){ /*復(fù)合語(yǔ)句開始*/intb=2;b=a+b;a=a+b; } /*復(fù)合語(yǔ)句結(jié)束*/ printf("%d",a); return0;}b:小范圍內(nèi)的臨時(shí)變量

4例5-7全局變量定義#include"stdio.h"intx=0; /*定義全局變量x*/intf(){intx=4;/*x為局部變量*/returnx;}intmain(void){

inta=1;

x

=a; /*對(duì)全局變量x賦值x=1*/a=f(); /*a=4*/{

intb=2;

b=a+b; /*b=6*/

x=x+b; /*全局變量運(yùn)算x=1+6*/}printf("%d%d",a,x);return0;}若局部變量與全局變量同名,局部變量?jī)?yōu)先47變量作用范圍示例intx=1;voidmain(){inta=2;……..{

intb=3;a=20;…..}f();…}intt=4;voidf(){intx=5,b=6;…….}inta=7;

x=?a=?b=?

x=?b=?t=?a=?

x=?b=?t=?a=?

x=1a=20b=3

x=?a=?b=?

x=1a=20b沒(méi)有定義

x=1b=無(wú)t=4a=7若函數(shù)內(nèi)局部變量與函數(shù)中復(fù)合語(yǔ)句內(nèi)變量同名,復(fù)合語(yǔ)句內(nèi)變量?jī)?yōu)先

x=5b=6t=4a沒(méi)定義

全局變量與局部變量的使用盡可能使用函數(shù)內(nèi)局部變量,保持函數(shù)間的獨(dú)立性慎用全局變量,全局變量對(duì)整個(gè)程序運(yùn)行都有影響復(fù)雜的程序會(huì)變得很難預(yù)測(cè)。上述概念反映了變量的作用域,是一種空間尺度。變量還有一個(gè)時(shí)間尺度,稱為變量的生命周期,反映了變量的存儲(chǔ)狀態(tài)。5.3.2變量生命周期和靜態(tài)局部變量

變量生命周期變量從定義開始分配存儲(chǔ)單元,到運(yùn)行結(jié)束存儲(chǔ)單元被收回的整個(gè)過(guò)程。C程序在內(nèi)存中的存儲(chǔ)狀態(tài)

一旦定義了變量,C編譯器就為其分配內(nèi)存空間5.3.2變量生命周期和靜態(tài)局部變量

變量的存儲(chǔ)狀態(tài)與其在空間的作用域相關(guān)變量的存儲(chǔ)類型:靜態(tài)存儲(chǔ)方式程序在運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間,即數(shù)據(jù)被存儲(chǔ)到靜態(tài)數(shù)據(jù)區(qū)程序在運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)的分配存儲(chǔ)空間,即數(shù)據(jù)被存儲(chǔ)到動(dòng)態(tài)數(shù)據(jù)區(qū)(2)動(dòng)態(tài)存儲(chǔ)方式5.3.2變量生命周期和靜態(tài)局部變量變量的存儲(chǔ)方式與其在空間的作用域相關(guān)1.局部變量的存儲(chǔ)方式靜態(tài)存儲(chǔ)方式

static

類型名變量表

用static聲明的局部變量被存儲(chǔ)到靜態(tài)數(shù)據(jù)區(qū)內(nèi)靜態(tài)變量的初值缺省為0

函數(shù)調(diào)用后該變量值仍然被保留在內(nèi)存中,直到程序運(yùn)行結(jié)束。用static定義過(guò)的變量被簡(jiǎn)稱為靜態(tài)變量#include<stdio.h>voidfun(intk);intmain(void){intk;for(k=1;k<=3;k++)fun(k);return0;}voidfun(intk){

staticinta=100;printf(“%d,",a);a+=k; }例5-8靜態(tài)局部變量示例100,101,103,k=1輸出a=100,a更新為101k=2輸出a=101,a更新為103k=3輸出a=103,a更新為106靜態(tài)變量初始操作只執(zhí)行一次。靜態(tài)變量會(huì)記住前一次函數(shù)調(diào)用時(shí)留下來(lái)的值5.3.2變量生命周期和靜態(tài)局部變量變量的存儲(chǔ)方式與其在空間的作用域相關(guān)1.局部變量的存儲(chǔ)方式非static的局部變量在其所在函數(shù)被調(diào)用時(shí),系統(tǒng)自動(dòng)為它們?cè)趧?dòng)態(tài)數(shù)據(jù)區(qū)分配內(nèi)存空間,一旦函數(shù)調(diào)用結(jié)束,這些存儲(chǔ)空間被系統(tǒng)收回。變量的值不復(fù)存在。因此,局部變量又稱自動(dòng)變量。(2)動(dòng)態(tài)存儲(chǔ)方式自動(dòng)變量的定義:auto類型名變量表

沒(méi)有特殊說(shuō)明的局部變量被認(rèn)為是auto存貯的5.3.2變量生命周期和靜態(tài)局部變量(2)動(dòng)態(tài)存儲(chǔ)方式函數(shù)中的形參、函數(shù)中定義的非static變量等局部變量都屬于auto變量,它們都是動(dòng)態(tài)變量自動(dòng)變量(auto)就是普通的局部變量intx,y;

autointx,y;charc1;autocharc1;函數(shù)調(diào)用時(shí),定義變量,分配存儲(chǔ)單元。函數(shù)調(diào)用結(jié)束,收回存儲(chǔ)單元。1.局部變量的存儲(chǔ)方式5.3.2變量生命周期和靜態(tài)局部變量變量的存儲(chǔ)方式與其在空間的作用域相關(guān)2.全局變量的存儲(chǔ)方式全局變量與具體函數(shù)無(wú)關(guān),全部存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論