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。