一、變量的作用域
作用域是程序中定義的變量存在(或生效)的區域,超過該區域變量就不能被訪問。C語言中有四種地方可以定義變量。
1)在所有函數外部定義的是全局變量。
2)在頭文件中定義的是全局變量。
3)在函數或語句塊內部定義的是局部變量。
4)函數的參數是該函數的局部變量。
順便解釋一下,函數的聲明和函數的定義是兩個概念,但是,變量的定義和變量的聲明是同一概念,或定義變量和聲明變量也行,取決於程序員的表達習慣。
二、全局變量
全局變量是定義在函數外部,通常是在程序的頂部(其它地方也可以)。全局變量在整個程序生命周期內都是有效的,在定義位置之后的任意函數中都能訪問。
全局變量在主程序退出時由系統收回內存空間。
示例(book37.c)
/*
* 程序名:book37.c,此程序用於演示全局變量的作用域
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
double pi=3.141592; // 全局變量聲明
void func1(); // 聲明一個自定義函數
int main()
{
printf("位置一 pi=%f\n",pi);
func1();
printf("位置二 pi=%f\n",pi);
}
void func1()
{
printf("位置三 pi=%f\n",pi);
pi=3.141593; // 改變pi的值
printf("位置四 pi=%f\n",pi);
}
在上面的代碼中,pi為全局變量,定義在main()和func1()之外,位於程序的頂部,在main()和func1()函數中都可以訪問它。
運行效果
三、局部變量
在某個函數或語句塊的內部聲明的變量稱為局部變量,它們只能在該函數或語句塊內部的語句使用。
局部變量在函數或語句塊外部是不可用的。
局部變量在函數返回或語句塊結束時由系統收回內存空間。
四、函數的參數
函數的參數被當作該函數內的局部變量。
建議各位再閱讀《C語言函數》的” 九、函數參數的傳遞”章節。
五、注意事項
局部變量和全局變量的名稱可以相同,在某函數或語句塊內部,如果局部變量名與全局變量名相同,就會屏蔽全局變量而使用局部變量。
示例(book39.c)
/*
* 程序名:book39.c,此程序演示局部變量與全局變量重名的情況.
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
double pi=3.141592; // 全局變量聲明
void func1(); // 聲明一個自定義函數
int main()
{
printf("位置一 pi=%f\n",pi);
func1();
printf("位置二 pi=%f\n",pi);
}
void func1()
{
double pi=3.141593; // 全局變量聲明
printf("位置三 pi=%f\n",pi);
}
在以上的代碼中,定義了全局變量pi,在func1()函數中,定義了局部變量pi,func1()函數運行的時候,會使用自己的局部變量pi,不會使用全局變量pi,所以main函數中位置二輸出pi的值是仍然3.141592。
運行效果
六、課后作業
編寫示例程序,把本章節介紹的知識點全部演示一遍,用程序演示可以加深您的理解和映象。
七、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!