c 學習筆記之c 作用域詳解

2021-05-27 16:33:03 字數 1010 閱讀 3631

c++作用域今天來總結一下作用域的問題。定義:作用域是乙個程式文字的區域。每個名字都定義在乙個作用域中,在宣告點到作用域結束的區間內有效。下面就上**:
void f()

void g()

void h()

上邊**對f()的呼叫在g()的作用域中,此作用域巢狀在全域性作用域,名字必須是先宣告後使用的,所以f()不能呼叫g()。

c++有多種作用域

1.全域性作用域,在任何其他作用域之外的程式區域。

2.名字空間作用域 :乙個名字空間作用域巢狀於全域性作用域或者另乙個名字空間作用域中比如using  namespace std;

3.類作用域:位於之間的的函式引數列表中的程式區域。

4語句作用域「例如 for語句內的程式區域

作用域的作用是保持名字的區域性性,使之不受宣告其他地方名字的影響。

下面是乙個較大的例項,說明了名字是如何在語句和語句塊末尾離開作用域的:

void f(int x)//f 作用域是全域性的。x是區域性變數

int g(int x)

因為x在不同的作用域內,所以是不會有衝突的。

int max(int a,int b)

int abs(int a)

下面是乙個較大的例項,說明了名字是如何在語句和語句塊末尾離開作用域的:
class my_vector
};

void c:f() //類外定義的成員函式

這是一種最常見的有用用法

綜上述,不建議使用這種複雜的巢狀作用域,記住,程式保持簡單性。

在程式設計中,盡量少用全劇變數。因為全域性變數是乙個公共介面,下面的方法都可以進行對其修改。**多的時候基本不可能知道他是被哪個函式修改了。所以乙個好的程式應該只有少用全域性變數。

關於C 域作用符詳解

c 裡的範圍有以下幾種,全域性作用域,名空間作用域,類作用域。編譯器在編譯時,預設從同級別的範圍內開始解析符號,採用由內而外的順序進行解析函式名。被稱為作用域解析符,用於引入乙個作用域。bind表示使用的是全域性名空間內的bind函式。在c 裡引入了名空間 namespace 的概念,比如std c...

C 之static及其作用域

一 面向過程設計中的static 1 靜態全域性變數 在全域性變數前,加上關鍵字static,該變數就被定義成為乙個靜態全域性變數。我們先舉乙個全域性變數和靜態全域性變數的例子,例如,在檔案a中定義靜態全域性變數 i 和全域性變數 j includeusing namespace std stati...

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

c 變數作用域 作用域是程式的乙個區域,一般來說有三個地方可以定義變數 我們將在後續的章節中學習什麼是函式和引數。本章我們先來講解什麼是區域性變數和全域性變數。區域性變數 在函式或乙個 塊內部宣告的變數,稱為區域性變數。它們只能被函式內部或者 塊內部的語句使用。下面的例項使用了區域性變數 inclu...