不論是在程式的什麼位置,使用的名字都會指向乙個特定的實體:變數、函式、型別等。然而,同乙個名字如果出現在程式的不同位置,也可指向的是不同實體。
作用域(scope)是程式的一部分,在其中名字有特定的含義。c++語言中大多數作用域都是以花括號分隔。
同乙個名字在不同的作用域可能指向不同的實體。名字的有效區域始於名字的宣告語句,以宣告語句所在的作用域末端為結束。
例子
#include
intmain()
程式執行結果:
sum of 1 to 10 inclusive is 55
該程式定義了3個名字:main、sum 和 val,同時使用了命名空間名字 std,該空間提供了 cout 和 cin 共程式使用。
名字 main 定義於所有花括號之外,他和其他大多數定義在函式體之外的名字一樣擁有全域性作用域。一旦宣告之後,全域性作用域內的名字在整個程式的範圍內都可以使用。名字 sum 定義於 main 函式所限制的作用域之內,從宣告 sum 開始直到 main 函式結束為止都可以訪問它,但是除了 main 函式所在的塊就無法訪問了,因此說變數 sum 擁有塊作用域。名字 val 定義於 for 語句內,在 for 語句之內可以訪問 val,但是在 main 函式的其他部分就不能訪問它了。
作用域能夠彼此包含,被包含(或者被巢狀)的作用域稱為內層作用域(inner scope)包含別的作用域的作用域稱為外層作用域(outer scope)
作用域中一旦宣告了某個名字,它所巢狀的所有作用域中都可以訪問該名字。同時,允許在內層作用域中重新定義外層作用域已有的名字。
例子
/* 該程式僅用於說明: 函式內部不易定義與全域性變數同名的新變數 */
#include
int reused =42;
// reused 擁有全域性作用域
intmain()
程式執行結果
4200
0420
c (名字的作用域)
不論是在程式的什麼位置,使用到的每個名字都會指向乙個特定的實體 變數,函式,型別等。然而,同乙個名字如果出現在程式的不同名字,也可能指向的是不同的位置,也可能指向的是不同實體。作用域 scope 是程式的一部分,在其中有其特定的含義,c 中大多數作用域都以花括號分隔。同乙個名字在不同的作用域中可能指...
名字的作用域
c 程式中,每個名字都與唯一的實體 比如變數 函式和型別等 相關聯.儘管有這樣的要求,還是可以在程式中多次使用同乙個名字,只要它用在不同的上下文中,且通過這些上下文可以區分改名字的不同意義.用來區分名字的不同意義的上下文稱為作用域 scope 作用域是程式的一段區域.乙個名稱可以和不同作用域中的不同...
名字的作用域
include include std string s1 xiao cui s1的作用域為整個檔案為全域性作用域,int a 3 void test int main 裡邊的範圍為區域性作用於,std string s2 ai ni xiao cui s2的作用域為 裡邊的範圍為區域性作用域,不能...