1. 程式人生 > 程式設計 >由淺入深學習C++變數作用域

由淺入深學習C++變數作用域

C++ 變數作用域

作用域是程式的一個區域,一般來說有三個地方可以定義變數:

  • 在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。
  • 在函式引數的定義中宣告的變數,稱為形式引數。
  • 在所有函式外部宣告的變數,稱為全域性變數。

我們將在後續的章節中學習什麼是函式和引數。本章我們先來講解什麼是區域性變數和全域性變數。

區域性變數

在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。它們只能被函式內部或者程式碼塊內部的語句使用。下面的例項使用了局部變數:

#include <iostream>
using namespace std;
 
int main ()
{
 // 區域性變數宣告
 int a,b;
 int c;
 
 // 實際初始化
 a = 10;
 b = 20;
 c = a + b;
 
 cout << c;
 
 return 0;
}

全域性變數

在所有函式外部定義的變數(通常是在程式的頭部),稱為全域性變數。全域性變數的值在程式的整個生命週期內都是有效的。

全域性變數可以被任何函式訪問。也就是說,全域性變數一旦宣告,在整個程式中都是可用的。下面的例項使用了全域性變數和區域性變數:

#include <iostream>
using namespace std;
 
// 全域性變數宣告
int g;
 
int main ()
{
 // 區域性變數宣告
 int a,b;
 
 // 實際初始化
 a = 10;
 b = 20;
 g = a + b;
 
 cout << g;
 
 return 0;
}

在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,區域性變數的值會覆蓋全域性變數的值。下面是一個例項:

#include <iostream>
using namespace std;
 
// 全域性變數宣告
int g = 20;
 
int main ()
{
 // 區域性變數宣告
 int g = 10;
 
 cout << g;
 
 return 0;
}

當上面的程式碼被編譯和執行時,它會產生下列結果:

10

初始化區域性變數和全域性變數

當局部變數被定義時,系統不會對其初始化,您必須自行對其初始化。定義全域性變數時,系統會自動初始化為下列值:

資料型別 初始化預設值
int 0
char '\0'
float 0
double 0
pointer NULL

正確地初始化變數是一個良好的程式設計習慣,否則有時候程式可能會產生意想不到的結果。

在程式中,區域性變數和全域性變數的名稱可以相同。

但是在函式內的區域性變數與全域性變數是兩個獨立的變數,互不影響。

下述程式碼中,全域性變數定義了一個int g=99,區域性變數定義了一個int g=10,由於這兩個g所在的作用域不同,所以各自獨立。

#include <iostream>
using namespace std;

// 全域性變數宣告
int g = 99;

// 函式宣告
int func();

int main()
{
  // 區域性變數宣告
  int g = 10;
  //cout << g;
  int kk = func();
  cout << kk;
  return 0;
}

// 函式定義
int func()
{
  return g;
}

以上就是由淺入深學習C++變數作用域的詳細內容,更多關於C++變數作用域的資料請關注我們其它相關文章!