(6.30)-第29課(6.5節(jié)-變量的作用域)_第1頁
(6.30)-第29課(6.5節(jié)-變量的作用域)_第2頁
(6.30)-第29課(6.5節(jié)-變量的作用域)_第3頁
(6.30)-第29課(6.5節(jié)-變量的作用域)_第4頁
(6.30)-第29課(6.5節(jié)-變量的作用域)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

變量的作用域函數(shù)定義變量的三種情況在一個函數(shù)體的聲明部分定義在一個函數(shù)體內,復合語句的開始處定義在所有函數(shù)外面定義局部變量定義在一個函數(shù)(包括主函數(shù))內部定義的變量稱為局部變量(也稱為內部變量)局部變量只在本函數(shù)內起作用,退出本函數(shù),變量即被釋放(清除),其值就不能再被引用說明函數(shù)體內復合語句中定義的變量,其作用域僅限于復合語句以內,即該變量定義的大括號對之內形參也是局部變量【例1:】局部變量的作用范圍voidmain(){intx,y;…

{inti,j;…}}intmax(intx,inty){intz;…..}i和j有效范圍x和y有效范圍x、y、z有效范圍【例2:】在多個函數(shù)中出現(xiàn)同名的局部變量intf(inta){

a=a+4;return(a);}voidmain(){inta=3;printf(“%d\n”,f(a));printf(“%d”,a);}運行結果:形參a的作用范圍main函數(shù)中的局部變量a的作用范圍73全局變量(外部變量)定義在所有函數(shù)外面定義的變量稱為全局變量全局變量的默認作用范圍是從定義變量的位置開始到本程序文件的結束可使用全局變量獲得多于一個的返回值,增強函數(shù)之間的數(shù)據(jù)聯(lián)系通道【例3:】全局變量的作用范圍intp=1,q=5;//外部變量floatf1(inta)//定義函數(shù)f1{intb,c;…}charc1,c2;//外部變量

charf2(intx,inty)//定義函數(shù)f2{inti,j;…}voidmain()//主函數(shù)

{intm,n;…}全局變量c1,c2的作用范圍全局變量p,q的作用范圍全局變量(外部變量)說明若在定義全局變量之前需要引用該全局變量,則需要進行聲明,一般格式為:

extern類型名變量名;【例4:】區(qū)分全局變量的聲明與定義externintn;

//全局變量的聲明voidfun(){n-=20;}intn=100;

//全局變量的定義voidmain(){printf(“n=%d\n”,n);for(;n>=60;){fun();printf(“n=%d\n”,n);}}全局變量的定義與聲明不是一回事。定義只能有一次,而全局變量的聲明可進行多次在同一源文件中,全局變量與局部變量同名,則局部變量在其作用范圍內屏蔽全局變量,即局部變量起作用,全局變量不起作用【例5:】外部變量與局部變量同名#include<stdio.h>inta=3,b=5;//定義全局變量a,bvoidmain(){intmax(inta,intb);//聲明函數(shù)原型inta=8;//定義主函數(shù)的局部變量a

printf(“%d”,max(a,b));//訪問局部變量a、全局變量b}intmax(inta,intb)//形參a,b為max函數(shù)的局部變量{intc;c=a>b?a:b;//訪問局部變量a、breturn(c);}a=8b=5運行結果為:8由于函數(shù)的調用只能帶回一個返回值,因此有時可以利用全局變量增加與函數(shù)聯(lián)系的渠道,從函數(shù)得到一個以上的返回值若在一個函數(shù)中改變了全局變量的值,則其后引用該變量時,得到的是被改變了的值【例6:】有一個一維數(shù)組,內放10個學生成績,編寫一個函數(shù),求出平均分,最高分和最低分解題思路希望從函數(shù)得到3個結果值可以把平均值作為函數(shù)值返回,另外兩個(最大值、最小值)可以使用全局變量程序實現(xiàn)#include<stdio.h>floatMax=0,Min=0;//全局變量floataverage(floatarray[],intn)

//定義函數(shù),第一個形參為數(shù)組{inti;

floataver,sum=array[0];

Max=Min=array[0];

for(i=1;i<n;i++){

sum=sum+array[i];if(array[i]>Max)Max=array[i];

elseif(array[i]<Min)Min=array[i];

}aver=sum/n;return(aver);//返回平均值

}voidmain(){floatave,score[10];

inti;

for(i=0;i<10;i++)

scanf(“%f”,&score[i]);

ave=average(score,10);

printf(“max=%6.2f\nmin=%6.2f\naverage=%6.2f\n”,Max,Min,ave);}建議非必要時,不要使用全局變量,因為:占用資源多,全局變量在程序的全部執(zhí)行過程中都占用存儲單元。通用性差。因為函數(shù)在執(zhí)行時要依賴于其

溫馨提示

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

評論

0/150

提交評論