變數的作用域是指變數有效性的範圍,就是使用者自訂的變數可以使用的程式碼範圍;它與變數定義的位置密切相關。
作用域
是從空間這個角度來描述變數的,依作用域的不同,變數可分為局部變數和全域變數。
1、局部變數
局部變數是在函數(或程式碼區塊)內部定義的變量,也稱為內部變量,局部變數只能在定義它的函數(或程式碼區塊)內被存取和使用,其他函數均不能使用。
局部變數的作用域,限於說明它的程式碼區塊內:從說明的地方開始至所在的程式碼區塊結束, 離開該函數後再使用這種變數是非法的。
例:
int f1(int a) { int b,c; …… }a,b,c作用域 int f2(int x) { int y,z; }x,y,z作用域 main() { int m,n; }
說明:a為形參,b,c為一般變數;在f1的範圍內a,b,c有效,或者說a,b,c變數的作用域限於f1內。同理,x,y,z的作用域限於f2內; m,n的作用域限於main函數內。
注意,在同一個作用域內,不允許有同名的變數。
2、全域變數
全域變數是在全域環境下宣告的變量,它的作用域是從定義點開始直到程序檔案結束;它在程式的整個運作過程中,都佔用儲存單元。
全域變數在一個函數中改變了全域變數的值,其他函數可以共享;它相當於起到在函數間傳遞資料的作用。
例:
int a,b; void f1() { …… } float x,y; int fz() { …… } main() { …… }
說明:a、b、x、y 都是在函數外部定義的外部變量,都是全域變數。但x,y 定義在函數f1之後,在f1內又無對x,y的說明,所以它們在f1內無效。 a,b定義在原始程式最前面,因此在f1,f2及main內不加說明也可使用。
程式碼範例:
輸入立方體的長寬高l,w,h。求體積及三個面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分别输入长度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); }
輸出:
以上是什麼是變數的作用域的詳細內容。更多資訊請關注PHP中文網其他相關文章!