您好,登錄后才能下訂單哦!
小編給大家分享一下變量的作用域是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
變量的作用域是指變量有效性的范圍,就是用戶自定義的變量可以使用的代碼范圍;它與變量定義的位置密切相關(guān)。
作用域是從空間這個(gè)角度來(lái)描述變量的,按照作用域的不同,變量可分為局部變量和全局變量。
局部變量
局部變量是在函數(shù)(或代碼塊)內(nèi)部定義的變量,也稱為內(nèi)部變量,局部變量只能在定義它的函數(shù)(或代碼塊)內(nèi)被訪問(wèn)和使用,其他函數(shù)均不能使用。
局部變量的作用域,限于說(shuō)明它的代碼塊內(nèi):從說(shuō)明的地方開(kāi)始至所在的代碼塊結(jié)束, 離開(kāi)該函數(shù)后再使用這種變量是非法的。
例:
int f1(int a) { int b,c; …… }a,b,c作用域 int f2(int x) { int y,z; }x,y,z作用域 main() { int m,n; }
說(shuō)明:a為形參,b,c為一般變量;在 f1的范圍內(nèi)a,b,c有效,或者說(shuō)a,b,c變量的作用域限于f1內(nèi)。同理,x,y,z的作用域限于f2內(nèi); m,n的作用域限于main函數(shù)內(nèi)。
注意,在同一個(gè)作用域內(nèi),不允許有同名的變量。
全局變量
全局變量是在全局環(huán)境下聲明的變量,它的作用域是從定義點(diǎn)開(kāi)始直到程序文件結(jié)束;它在程序的整個(gè)運(yùn)行過(guò)程中,都占用存儲(chǔ)單元。
全局變量在一個(gè)函數(shù)中改變了全局變量的值,其他函數(shù)可以共享;它相當(dāng)于起到在函數(shù)間傳遞數(shù)據(jù)的作用。
例:
int a,b; void f1() { …… } float x,y; int fz() { …… } main() { …… }
說(shuō)明:a、b、x、y 都是在函數(shù)外部定義的外部變量,都是全局變量。但x,y 定義在函數(shù)f1之后,而在f1內(nèi)又無(wú)對(duì)x,y的說(shuō)明,所以它們?cè)趂1內(nèi)無(wú)效。 a,b定義在源程序最前面,因此在f1,f2及main內(nèi)不加說(shuō)明也可使用。
代碼示例:
輸入正方體的長(zhǎng)寬高l,w,h。求體積及三個(gè)面x*y,x*z,y*z的面積。
#include <stdio.h> int s1,s2,s3;//全局變量 int vs( int a,int b,int c) { int v;//局部變量 v=a*b*c; s1=a*b; s2=b*c; s3=a*c; return v; } main() { int v,l,w,h;//局部變量 printf("\n分別輸入長(zhǎng)度l、寬度w和高度h:\n"); scanf("%d%d%d",&l,&w,&h); v=vs(l,w,h); printf("面積1為:%d,面積2為:%d,面積3為:%d\n",s1,s2,s3); printf("體積為:%d",v); }
輸出:
以上是變量的作用域是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。