溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

變量的作用域是什么

發(fā)布時(shí)間:2020-10-15 19:24:39 來(lái)源:億速云 閱讀:215 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下變量的作用域是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

變量的作用域是指變量有效性的范圍,就是用戶自定義的變量可以使用的代碼范圍;它與變量定義的位置密切相關(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è)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI