[Powered by Google Translate] DAVID DICIURCIO：因此，一個重要的概念，掌握
編程的概念範圍。
範圍可以被定義為是一個變量的上下文中
可見或不可訪問。
例如，讓我們說，我們有一個功能，主，也就是
應該遞增變量x，從一個增加到兩個。
我們可以看到，主要的初始化x為1，打印
一些文字，然後運行該函數的增量，前
印刷更多的文字。
如果此功能才能正常運行，它會
打印輸出x 2。
讓我們試試吧。
>> 所以，你可以看到，主並沒有做什麼我們所期望的。
它返回的值為1，而
比2我們的預期。
這個錯誤的原因可以解釋的範圍。
在功能上，主，我們初始化x
僅在該函數。
換言之，變量x被聲明內局部
功能，主要的，並且是不能訪問
以外的函數。
只有主在這種情況下，可以訪問x。
當我們調用增量，我們不傳遞X作為輸入，但
僅僅是x的一個拷貝。
由於這樣做的結果，該函數增量僅添加
值1到x的值的副本。
但不是X本身。
當我們返回到主，X本身並沒有改變。
因此，打印出x將只產生1的值。
>> 好吧，那麼，留下了一個問題：我們應該如何解決
這個功能嗎？
一種解決方案是具有增量返回一個值。
以這種方式，該函數增量
給我們一個整數。
因此，這裡是我們修改後的代碼與
交替增加功能。
在這裡，我們代替返回x + 1的，而不是剛結束
x是等於到x + 1。
另外，需要注意，我們更換的輸出
增加，以前無效，用int，指出
增量將傳回一個整數值。
現在，增量運行後，它會返回值
2，正是因為我們意。
>> 另一種情況，演示了範圍的重要性
是在scopeloop.c。
在這段代碼中，我們有一個for循環中的變量
總被初始化過程中的每一步。
不幸的是，這段代碼無法編譯。
這是因為實際不存在的變量total
外的循環。
循環內聲明的變量只存在於
循環本身，並證明我們的錯誤
消息，總申報。
但要聲明範圍內的變量總有
主要的功能。
此外，在每一次迭代的循環，我們
我們總被重新初始化為0。
這本身並沒有使代碼進行編譯，但它
防止總從不斷總結過去1的值。
>> 同樣，什麼是最好的方式來解決這個問題呢？
其中一個更容易的方法，包括總的本地
的功能，主要的，而不是循環本身。
這總要遞增，最終，
允許它被印在for循環之後。
另一種技術，我只簡要地總結一下
是使用的全局變量。
全局變量是變量的聲明之前，主要
，在整個程序中保持其價值。
當然，功能可以改變一個全球性的，
，但他們不出去的範圍和局部變量一樣。
然而，使用全局變量的傾向會讓人不悅
不好的設計，因為有更好的方法時
函數之間共享數據。
例如，使用指針。
但另一個時間。
>> 最後，重要的是要了解的範圍
的上下文中的計算機的存儲器中，或RAM。
當我們執行一個程序時，局部變量和函數
被添加到一個特定的位置，在
RAM稱為堆疊。
作為函數的返回值的變量，堆棧幀
有效地去除從堆棧中釋放更多的內存。
因此，在審查範圍內，一定要記住這三個
關鍵點。
一，範圍可以是本地或全局。
這取決於聲明變量的位置。
二，聲明或初始化函數中的​​變量
本地的該功能，並且不能改變由其他
功能，至少在沒有使用指針。
最後，當變量也是局部的循環，
內聲明的。
變量是無法訪問
以外的循環。
>> 這就是現在範圍。
感謝收看。