[Powered by Google Translate] JOE MCCORMICK:所以,現在我們要談論變量。 計算機科學中的變量的方式來存儲值。 現在,我們如何存儲, 是不是太重要的價值。 我們可以有一個值,就是一個字,這可能 作為字符串存儲。 或者,我們可以擁有的東西,是一個字符, 像字母。 這將是存儲一個char。 我們可以有一個數字,如1或12,這將是 存儲為整數或整數。 然後,我們有不同的事情,比如一個浮點數,它可以存儲 事情,比如1.01或111.13。 這些價值往往被稱之為可變的。 這意味著如果我們在數儲存到一個整數 頂部的程序後,我們可以改變這個數字, 是三個或7。 現在,一個局部變量是什麼,你通常會遇到的, 當執行一個函數。 因此,讓我們說你是在您的主要功能。 你想創建一個變量名為num。 我們將存儲的整數。 因此,我們可以說的東西,如int NUM = 3。 現在,你去那裡。 你有一個局部變量。 現在,這個變量可以被改變,以後在主 功能,通過說一些像數= 6或num = 7。 但在您的變量被卡住 該函數的範圍。 和範圍,通常開始的大括號 主要開始和結束的花括號, 關閉的主要功能。 此局部變量,現在停留在這個範圍內。 因此,它可以不再被訪問在另一個函數, 以外的主要功能。 而一旦主要功能執行完畢 返回時,這個局部變量名為num已經一去不復返了。 因此,在局部變量相比,我們有一些 所謂的全局變量。 現在,聲明一個全局變量在頂部的 程序,可以在程序的任何地方訪問。 因此,讓我們說你聲明一個全局變量的頂部 你的程序,名為test。 現在,這個變量可以訪問 在程序的任何地方。 您可以訪問它的主要功能或功能 以下。 但是,如果你曾經嘗試創建一個局部變量中的一個 這些功能,用相同的名稱作為 測試中,有衝突。 因為,你不知道你要使用哪個變量。 你想使用的全球測試, 聲明在頂部節目嗎? 或者你要使用的局部變量測試 你想在這個函數中創建的嗎? 現在,這是為什麼我們不想要的原因之一 只是自由使用全局變量。 有一種叫做凌亂的名字空間。 即使你不是故意的,你可能會意外地創建一個 局部變量,後來在節目中,具有相同 作為全局變量的名稱。 這並不構成一個巨大的問題,當你工作 小10,20,30行程序。 一旦你有成千上萬行的代碼,你會不會 記得很清楚你所存儲的全局變量。 因此,人們要考慮的事情,當使用本地和全球 變量是想對他們的範圍。 現在,範圍是指,這些變量可以用在 該方案。 因此,有什麼所謂的全球範圍內的全局變量, 這意味著它可以在任何地方使用該程序。 一旦初始化變量,它可以用來在 任何功能,不管它是主要功能或 功能10種功能下降,稱為foo10。 不要緊,在您使用它。 但是,一個局部變量的具體範圍。 而且,局部變量的範圍是由 它被初始化。 現在,範圍通常由開口 大括號的函數中聲明的變量,直到 該函數的右括號。 因此,讓我們說,你是在主函數中。 創建一個變量。 但是現在,在這個主要功能,我們調用另一個 函數foo。 在函數foo中,我們可以不叫變量,我們只是 在主函數中創建的,因為它是不在範圍之內。 這個變量只有在範圍內的主要功能。 因此,我們可以使用它進一步,在主函數中,但 不屬於一個從main函數調用的函數。 因此,像棧和堆,全局變量 存儲在存儲器的某一部分。 現在,這部分的內存的系統上 你使用。 全局變量有兩個不同的點,他們是 存儲,一個用於初始化的全局變量,例如,如果 你宣布整數測試= 5,在你的程序的頂部。 而其他區域是未初始化的全局變量, 如果你剛才說的,詮釋的測試,在你的程序的頂部, 要測試變量 後來在節目中。 所以我現在要談論一些所謂的定義, 這是一種給一個象徵性的名稱為一個常數。 在這裡,我們有一個例子,一個C程序,計算 一個圓的面積。 在上面的程序中,我們會做的東西,說 的#define PI 3.14159。 #定義了,技術上不創建一個全局變量。 相反,它告訴編譯器的預處理 查找和替換所有實例的圓周率 3.14159,然後再編譯。 然而,它成為一個有用的技術,用於聲明 常量,在整個程序中使用。 現在,尋找的區域處的功能,需要在一個float rad和簡單的返回一個圓的面積與 半徑或PIŕ平方,或PI倍弧度倍弧度。 這是其中的#define起著關鍵的作用。 因為編譯器將基本上取代,PI 的數目的符號與3.14159。 因此,我們不必寫一遍又一遍。 以後,如果我們決定使用更圓周率,讓我們 說3.1415926,我們可以補充一點,頂部的 計劃,並沒有改變它, 後來在節目中。 這是一個很好的使用#define。 我們不希望,因為它作為一個全局變量來存儲PI 以後可能會改變的計劃。 我們知道圓周率不會改變。 它是一個常數。 所以這個包的全局變量,我們的話題。 所以,今天我們談到的區別本地和 全局變量時,使用他們,根據他們的 範圍,為什麼不使用全局變量會 因為雜亂的名稱空間。 我喬·​​麥考密克。 這是CS50。