<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            C語言局部變量和全局變量

            時間:2025-10-21 12:36:47 C語言

            C語言局部變量和全局變量

              C語言允許直接訪問物理地址,可以直接對硬件進行操作。那么大家知道C語言局部變量和全局變量是什么呢?下面一起來看看!

              形參變量要等到函數被調用時才分配內存,調用結束后立即釋放內存。這說明形參變量的作用域非常有限,只能在函數內部使用,離開該函數就無效了。所謂作用域(Scope),就是變量的有效范圍。

              不僅對于形參變量,C語言中所有的變量都有自己的作用域。決定變量作用域的是變量的定義位置。

              局部變量

              定義在函數內部的變量稱為局部變量(Local Variable),它的作用域僅限于函數內部, 離開該函數后就是無效的,再使用就會報錯。例如:

              int f1(int a){ int b,c; /pic/pic/p>

              幾點說明:

              1) 在 main 函數中定義的變量也是局部變量,只能在 main 函數中使用;同時,main 函數中也不能使用其它函數中定義的變量。main 函數也是一個函數,與其它函數地位平等。

              2) 形參變量、在函數體內定義的變量都是局部變量。實參給形參傳值的過程也就是給局部變量賦值的過程。

              3) 可以在不同的函數中使用相同的變量名,它們表示不同的數據,分配不同的內存,互不干擾,也不會發生混淆。

              4) 在語句塊中也可定義變量,它的作用域只限于當前語句塊。

              全局變量

              在所有函數外部定義的變量稱為全局變量(Global Variable),它的作用域默認是整個程序,也就是所有的源文件,包括 .c 和 .h 文件。例如:

              int a, b; /pic/pic/pic/pic/pic/p>

              a、b、x、y 都是在函數外部定義的全局變量。C語言代碼是從前往后依次執行的,由于 x、y 定義在函數 func1() 之后,所以在 func1() 內無效;而 a、b 定義在源程序的開頭,所以在 func1()、func2() 和 main() 內都有效。

              局部變量和全局變量的綜合示例

              【示例1】輸出變量的值:

              #include int n = 10; /pic/pic/pic/pic/pic/p>

              運行結果:

              func1 n: 20

              func2 n: 30

              func3 n: 10

              block n: 40

              main n: 30

              代碼中雖然定義了多個同名變量 n,但它們的作用域不同,在內存中的位置(地址)也不同,所以是相互獨立的變量,互不影響,不會產生重復定義(Redefinition)錯誤。

              1) 對于 func1(),輸出結果為 20,顯然使用的是函數內部的 n,而不是外部的 n;func2() 也是相同的情況。

              當全局變量和局部變量同名時,在局部范圍內全局變量被“屏蔽”,不再起作用。或者說,變量的使用遵循就近原則,如果在當前作用域中存在同名變量,就不會向更大的作用域中去尋找變量。

              2) func3() 輸出 10,使用的是全局變量,因為在 func3() 函數中不存在局部變量 n,所以編譯器只能到函數外部,也就是全局作用域中去尋找變量 n。

              3) 由{ }包圍的代碼塊也擁有獨立的作用域,printf() 使用它自己內部的變量 n,輸出 40。

              3) C語言規定,只能從小的作用域向大的作用域中去尋找變量,而不能反過來,使用更小的作用域中的變量。對于 main() 函數,即使代碼塊中的 n 離輸出語句更近,但它仍然會使用 main() 函數開頭定義的 n,所以輸出結果是 30。

              【示例2】根據長方體的長寬高求它的體積以及三個面的面積。

              #include int s1, s2, s3; /pic/pic/p>

              運行結果:

              Input length, width and height: 10 20 30↙

              v=6000, s1=200, s2=600, s3=300

              根據題意,我們希望借助一個函數得到三個值:體積 v 以及三個面的面積 s1、s2、s3。遺憾的是,C語言中的函數只能有一個返回值,我們只能將其中的一份數據,也就是體積 v 放到返回值中,而將面積 s1、s2、s3 設置為全局變量。全局變量的作用域是整個程序,在函數 vs() 中修改 s1、s2、s3 的值,能夠影響到包括 main() 在內的其它函數。

            【C語言局部變量和全局變量】相關文章:

            C語言與C++和JAVE的區別03-09

            C語言的優點和缺點02-01

            Java和C語言的區別01-17

            c語言、c++語言兩者的區別和聯系03-03

            C語言的BYTE和char字符01-26

            淺談c語言和c++和VB的區別01-14

            LabVIEW和C語言哪個更好09-27

            C語言的strcpy()和strncpy()函數10-18

            C語言函數的遞歸和調用11-27

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看