區域性變數和全域性變數的區別


在這篇文章中,我們將瞭解區域性變數和全域性變數之間的區別。

區域性變數

  • 它通常在函式內部宣告。

  • 如果它沒有被初始化,則會儲存一個垃圾值。

  • 它在函式開始執行時建立。

  • 函式終止時它會被銷燬。

  • 由於區域性變數/資料只能被單個函式訪問,因此無法共享資料。

  • 需要將引數傳遞給區域性變數,以便它們能夠在函式中訪問該值。

  • 它儲存在棧上,除非另有說明。

  • 可以使用宣告它們的函式內部的語句來訪問它們。

  • 當在函式中對區域性變數進行更改時,這些更改不會反映在其他函式中。

  • 可以使用宣告它們的函式內部的語句來訪問區域性變數。

示例

以下是一個示例:

#include <stdio.h>
int main () {
   /* local variable declaration */
   int a, b;
   int c;
   /* actual initialization */
   a = 10;
   b = 20;
   c = a + b;
   printf ("value of a = %d, b = %d and c = %d
", a, b, c);    return 0; }

全域性變數

  • 它在函式外部宣告。

  • 如果它沒有被初始化,則預設情況下會儲存值為零。

  • 它在程式全域性執行之前建立。

  • 程式終止時它會被銷燬。

  • 由於多個函式可以訪問全域性變數,因此可以共享資料。

  • 它們在整個程式中可見,因此不需要傳遞引數。

  • 可以使用程式中的任何語句來訪問它。

  • 它儲存在程式內部的特定位置,該位置由編譯器決定。

  • 當在一個函式中對全域性變數進行更改時,這些更改也會反映在程式的其他部分。

示例

以下是一個示例:

#include
/* global variable declaration */
int g;
int main () {
   /* local variable declaration */
   int a, b;
   /* actual initialization */
   a = 10;
   b = 20;
   g = a + b;
   printf ("value of a = %d, b = %d and g = %d
", a, b, g);    return 0; }

更新於:2021年3月24日

10K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告