1 00:00:06,650 --> 00:00:09,390 [Powered by Google Translate] JOE MCCORMICK:所以,現在我們要談論變量。 2 00:00:09,390 --> 00:00:13,270 計算機科學中的變量的方式來存儲值。 3 00:00:13,270 --> 00:00:14,980 現在,我們如何存儲, 4 00:00:14,980 --> 00:00:16,210 是不是太重要的價值。 5 00:00:16,210 --> 00:00:19,780 我們可以有一個值,就是一個字,這可能 6 00:00:19,780 --> 00:00:21,170 作為字符串存儲。 7 00:00:21,170 --> 00:00:23,160 或者,我們可以擁有的東西,是一個字符, 8 00:00:23,160 --> 00:00:24,110 像字母。 9 00:00:24,110 --> 00:00:26,420 這將是存儲一個char。 10 00:00:26,420 --> 00:00:29,660 我們可以有一個數字,如1或12,這將是 11 00:00:29,660 --> 00:00:32,310 存儲為整數或整數。 12 00:00:32,310 --> 00:00:35,940 然後,我們有不同的事情,比如一個浮點數,它可以存儲 13 00:00:35,940 --> 00:00:41,700 事情,比如1.01或111.13。 14 00:00:41,700 --> 00:00:43,530 這些價值往往被稱之為可變的。 15 00:00:43,530 --> 00:00:46,490 這意味著如果我們在數儲存到一個整數 16 00:00:46,490 --> 00:00:49,490 頂部的程序後,我們可以改變這個數字, 17 00:00:49,490 --> 00:00:51,460 是三個或7。 18 00:00:51,460 --> 00:00:53,890 現在,一個局部變量是什麼,你通常會遇到的, 19 00:00:53,890 --> 00:00:55,250 當執行一個函數。 20 00:00:55,250 --> 00:00:57,260 因此,讓我們說你是在您的主要功能。 21 00:00:57,260 --> 00:00:59,910 你想創建一個變量名為num。 22 00:00:59,910 --> 00:01:01,240 我們將存儲的整數。 23 00:01:01,240 --> 00:01:04,680 因此,我們可以說的東西,如int NUM = 3。 24 00:01:04,680 --> 00:01:05,319 現在,你去那裡。 25 00:01:05,319 --> 00:01:06,830 你有一個局部變量。 26 00:01:06,830 --> 00:01:09,670 現在,這個變量可以被改變,以後在主 27 00:01:09,670 --> 00:01:13,700 功能,通過說一些像數= 6或num = 7。 28 00:01:13,700 --> 00:01:15,940 但在您的變量被卡住 29 00:01:15,940 --> 00:01:18,320 該函數的範圍。 30 00:01:18,320 --> 00:01:21,690 和範圍,通常開始的大括號 31 00:01:21,690 --> 00:01:23,990 主要開始和結束的花括號, 32 00:01:23,990 --> 00:01:26,230 關閉的主要功能。 33 00:01:26,230 --> 00:01:29,610 此局部變量,現在停留在這個範圍內。 34 00:01:29,610 --> 00:01:32,200 因此,它可以不再被訪問在另一個函數, 35 00:01:32,200 --> 00:01:33,950 以外的主要功能。 36 00:01:33,950 --> 00:01:36,230 而一旦主要功能執行完畢 37 00:01:36,230 --> 00:01:40,460 返回時,這個局部變量名為num已經一去不復返了。 38 00:01:40,460 --> 00:01:42,760 因此,在局部變量相比,我們有一些 39 00:01:42,760 --> 00:01:43,970 所謂的全局變量。 40 00:01:43,970 --> 00:01:46,890 現在,聲明一個全局變量在頂部的 41 00:01:46,890 --> 00:01:49,860 程序,可以在程序的任何地方訪問。 42 00:01:49,860 --> 00:01:51,805 因此,讓我們說你聲明一個全局變量的頂部 43 00:01:51,805 --> 00:01:53,200 你的程序,名為test。 44 00:01:53,200 --> 00:01:54,990 現在,這個變量可以訪問 45 00:01:54,990 --> 00:01:56,000 在程序的任何地方。 46 00:01:56,000 --> 00:01:58,230 您可以訪問它的主要功能或功能 47 00:01:58,230 --> 00:01:59,300 以下。 48 00:01:59,300 --> 00:02:02,210 但是,如果你曾經嘗試創建一個局部變量中的一個 49 00:02:02,210 --> 00:02:04,170 這些功能,用相同的名稱作為 50 00:02:04,170 --> 00:02:05,880 測試中,有衝突。 51 00:02:05,880 --> 00:02:07,720 因為,你不知道你要使用哪個變量。 52 00:02:07,720 --> 00:02:09,039 你想使用的全球測試, 53 00:02:09,039 --> 00:02:10,910 聲明在頂部節目嗎? 54 00:02:10,910 --> 00:02:12,495 或者你要使用的局部變量測試 55 00:02:12,495 --> 00:02:14,920 你想在這個函數中創建的嗎? 56 00:02:14,920 --> 00:02:16,700 現在,這是為什麼我們不想要的原因之一 57 00:02:16,700 --> 00:02:18,960 只是自由使用全局變量。 58 00:02:18,960 --> 00:02:21,570 有一種叫做凌亂的名字空間。 59 00:02:21,570 --> 00:02:23,940 即使你不是故意的,你可能會意外地創建一個 60 00:02:23,940 --> 00:02:26,270 局部變量,後來在節目中,具有相同 61 00:02:26,270 --> 00:02:28,140 作為全局變量的名稱。 62 00:02:28,140 --> 00:02:30,130 這並不構成一個巨大的問題,當你工作 63 00:02:30,130 --> 00:02:33,120 小10,20,30行程序。 64 00:02:33,120 --> 00:02:35,520 一旦你有成千上萬行的代碼,你會不會 65 00:02:35,520 --> 00:02:38,740 記得很清楚你所存儲的全局變量。 66 00:02:38,740 --> 00:02:41,000 因此,人們要考慮的事情,當使用本地和全球 67 00:02:41,000 --> 00:02:43,570 變量是想對他們的範圍。 68 00:02:43,570 --> 00:02:47,270 現在,範圍是指,這些變量可以用在 69 00:02:47,270 --> 00:02:48,500 該方案。 70 00:02:48,500 --> 00:02:51,080 因此,有什麼所謂的全球範圍內的全局變量, 71 00:02:51,080 --> 00:02:53,820 這意味著它可以在任何地方使用該程序。 72 00:02:53,820 --> 00:02:56,860 一旦初始化變量,它可以用來在 73 00:02:56,860 --> 00:03:00,530 任何功能,不管它是主要功能或 74 00:03:00,530 --> 00:03:03,780 功能10種功能下降,稱為foo10。 75 00:03:03,780 --> 00:03:05,160 不要緊,在您使用它。 76 00:03:05,160 --> 00:03:07,490 但是,一個局部變量的具體範圍。 77 00:03:07,490 --> 00:03:09,800 而且,局部變量的範圍是由 78 00:03:09,800 --> 00:03:11,030 它被初始化。 79 00:03:11,030 --> 00:03:13,680 現在,範圍通常由開口 80 00:03:13,680 --> 00:03:16,540 大括號的函數中聲明的變量,直到 81 00:03:16,540 --> 00:03:18,300 該函數的右括號。 82 00:03:18,300 --> 00:03:19,730 因此,讓我們說,你是在主函數中。 83 00:03:19,730 --> 00:03:21,410 創建一個變量。 84 00:03:21,410 --> 00:03:23,110 但是現在,在這個主要功能,我們調用另一個 85 00:03:23,110 --> 00:03:24,640 函數foo。 86 00:03:24,640 --> 00:03:27,070 在函數foo中,我們可以不叫變量,我們只是 87 00:03:27,070 --> 00:03:29,940 在主函數中創建的,因為它是不在範圍之內。 88 00:03:29,940 --> 00:03:33,410 這個變量只有在範圍內的主要功能。 89 00:03:33,410 --> 00:03:36,540 因此,我們可以使用它進一步,在主函數中,但 90 00:03:36,540 --> 00:03:40,650 不屬於一個從main函數調用的函數。 91 00:03:40,650 --> 00:03:43,390 因此,像棧和堆,全局變量 92 00:03:43,390 --> 00:03:45,580 存儲在存儲器的某一部分。 93 00:03:45,580 --> 00:03:47,665 現在,這部分的內存的系統上 94 00:03:47,665 --> 00:03:48,490 你使用。 95 00:03:48,490 --> 00:03:50,840 全局變量有兩個不同的點,他們是 96 00:03:50,840 --> 00:03:54,570 存儲,一個用於初始化的全局變量,例如,如果 97 00:03:54,570 --> 00:03:58,130 你宣布整數測試= 5,在你的程序的頂部。 98 00:03:58,130 --> 00:04:01,010 而其他區域是未初始化的全局變量, 99 00:04:01,010 --> 00:04:03,190 如果你剛才說的,詮釋的測試,在你的程序的頂部, 100 00:04:03,190 --> 00:04:05,040 要測試變量 101 00:04:05,040 --> 00:04:07,626 後來在節目中。 102 00:04:07,626 --> 00:04:10,140 所以我現在要談論一些所謂的定義, 103 00:04:10,140 --> 00:04:13,380 這是一種給一個象徵性的名稱為一個常數。 104 00:04:13,380 --> 00:04:17,420 在這裡,我們有一個例子,一個C程序,計算 105 00:04:17,420 --> 00:04:19,470 一個圓的面積。 106 00:04:19,470 --> 00:04:21,690 在上面的程序中,我們會做的東西,說 107 00:04:21,690 --> 00:04:25,830 的#define PI 3.14159。 108 00:04:25,830 --> 00:04:29,330 #定義了,技術上不創建一個全局變量。 109 00:04:29,330 --> 00:04:31,590 相反,它告訴編譯器的預處理 110 00:04:31,590 --> 00:04:34,350 查找和替換所有實例的圓周率 111 00:04:34,350 --> 00:04:37,540 3.14159,然後再編譯。 112 00:04:37,540 --> 00:04:39,830 然而,它成為一個有用的技術,用於聲明 113 00:04:39,830 --> 00:04:41,510 常量,在整個程序中使用。 114 00:04:41,510 --> 00:04:44,540 現在,尋找的區域處的功能,需要在一個float 115 00:04:44,540 --> 00:04:48,150 rad和簡單的返回一個圓的面積與 116 00:04:48,150 --> 00:04:52,920 半徑或PIŕ平方,或PI倍弧度倍弧度。 117 00:04:52,920 --> 00:04:56,040 這是其中的#define起著關鍵的作用。 118 00:04:56,040 --> 00:04:59,270 因為編譯器將基本上取代,PI 119 00:04:59,270 --> 00:05:02,780 的數目的符號與3.14159。 120 00:05:02,780 --> 00:05:05,560 因此,我們不必寫一遍又一遍。 121 00:05:05,560 --> 00:05:08,900 以後,如果我們決定使用更圓周率,讓我們 122 00:05:08,900 --> 00:05:12,800 說3.1415926,我們可以補充一點,頂部的 123 00:05:12,800 --> 00:05:14,330 計劃,並沒有改變它, 124 00:05:14,330 --> 00:05:16,160 後來在節目中。 125 00:05:16,160 --> 00:05:18,240 這是一個很好的使用#define。 126 00:05:18,240 --> 00:05:20,520 我們不希望,因為它作為一個全局變量來存儲PI 127 00:05:20,520 --> 00:05:21,780 以後可能會改變的計劃。 128 00:05:21,780 --> 00:05:23,430 我們知道圓周率不會改變。 129 00:05:23,430 --> 00:05:25,650 它是一個常數。 130 00:05:25,650 --> 00:05:28,120 所以這個包的全局變量,我們的話題。 131 00:05:28,120 --> 00:05:29,930 所以,今天我們談到的區別本地和 132 00:05:29,930 --> 00:05:32,490 全局變量時,使用他們,根據他們的 133 00:05:32,490 --> 00:05:36,660 範圍,為什麼不使用全局變量會 134 00:05:36,660 --> 00:05:39,360 因為雜亂的名稱空間。 135 00:05:39,360 --> 00:05:40,270 我喬·​​麥考密克。 136 00:05:40,270 --> 00:05:42,290 這是CS50。