-
局部變量
鎖定
局部變量定義
局部變量,也稱內部變量,是指在一個函數內部或複合語句內部定義的變量。
局部變量的作用域是定義該變量的函數或定義該變量的複合語句。也就是説,局部變量只在定義它的函數或複合語句範圍內有效,只能在定義它的函數或複合語句內才能使用它們。如圖1:
在函數f1內定義了三個變量,a為形參,b、c為一般變量。在fl的範圍內a、b、c有效,或者説a、b、c變量的作用域限於f1內。同理,x、y、i、j的作用域限於f2內。m、n的作用域限於main函數內。關於局部變量的作用域還要説明以下幾點:
1、主函數main()中定義的變量也只在主函數中有效,而不能因為在主函數中定義在整個文件或程序中有效。主函數也不能使用其他函數中定義的變量。因為主函數也是一個函數,它與其他函數是平行關係。這一點是與其他語言不同的,應予以注意。
2、不同函數中可以使用相同名字的變量,它們代表不同的對象,分配不同的單元,互不干擾。例如,上面在f1函數中定義了變量b和c,倘若在f2函數中也定義變量b和c,它們在內存中佔不同的單元,互不干擾。
3、形式參數是屬於被調函數的局部變量。例如上面f1函數中的形參a,也只在f1函數中有效,其他函數可以調用f1函數,但不能引用f1函數中的形參a。
4、在一個函數內部,可以在複合語句中定義變量,這些變量只在本複合語句中有效,這種複合語句也稱為“分程序”或“程序塊”。
局部變量全局變量
幾乎程序中的所有函數都能使用全局變量,客觀上全局變量就起到了在函數間傳遞數據的作用,甚至可以減少形參和實參的數量。當然在享用它的好處時,也要慎重,避免全局變量過多帶來的降低函數通用性及存儲空間的浪費。
對於全局變量還有以下幾點説明:
1、全局變量從程序運行起即佔據內存,在程序整個運行過程中可隨時訪問,程序退出時釋放內存。與之對應的局部變量在進入語句塊時獲得內存,僅能由語句塊內的語句訪問,退出語句塊時釋放內存,不再有效。
2、局部變量定義後不會自動初始化,除非程序員指定初值。全局變量在程序員不指定初值的情況下自動初始化為零。
3、在同一源文件中,允許全局變量和局部變量同名。在局部變量的作用域內,全局變量不起作用。
局部變量變量的作用域
在現實生活中,世界通用語言為英語,如果在其他國家説漢語,別人可能聽不懂,但是如果説英語,那麼世界各地的人都可能明白。與此類似,程序中的變量也有它自己的使用範圍,我們稱其為變量的作用域。變量的作用域都是通過它在程序中的位置隱式説明的。
C語言中的變量,按作用域範圍可分為兩種,即局部變量和全局變量,如圖2所示。