1 00:00:00,000 --> 00:00:03,080 >> 扬声器1:原来我们可以 成功交换两个值 2 00:00:03,080 --> 00:00:07,670 通过它们传递到一个变量 功能不是通过值或副本,但 3 00:00:07,670 --> 00:00:10,390 通过引用或通过他们的地址。 4 00:00:10,390 --> 00:00:12,740 换句话说,我们需要利用 一些被称为一个指针。 5 00:00:12,740 --> 00:00:15,580 一个指针,真的,仅仅是 一些变量的地址。 6 00:00:15,580 --> 00:00:19,660 所以,如果我们提供了一个调用的函数, 比如,换用的地址 7 00:00:19,660 --> 00:00:23,550 一个变量和另一个地址 变量,交换应有权 8 00:00:23,550 --> 00:00:26,090 去每个这些地址的 而真正改变 9 00:00:26,090 --> 00:00:27,360 值的存在。 10 00:00:27,360 --> 00:00:28,890 >> 让我们来看看这方面。 11 00:00:28,890 --> 00:00:31,360 让我们重新实现交换,如下所示。 12 00:00:31,360 --> 00:00:35,810 首先,让我们改变不会是一个int 但要成为一个指向int或 13 00:00:35,810 --> 00:00:36,920 一个int的地址。 14 00:00:36,920 --> 00:00:40,820 然后让我们做相同的B,改变 它从一个int是一个指向 15 00:00:40,820 --> 00:00:42,780 int或int的地址。 16 00:00:42,780 --> 00:00:45,860 >> 然后掉在里面,让我们仍然 声明tmp目录,让我们有一个 17 00:00:45,860 --> 00:00:47,810 临时场所的价值。 18 00:00:47,810 --> 00:00:52,430 但一个的值不是本身,因为 再次,一个是现在的地址 19 00:00:52,430 --> 00:00:53,270 一些诠释。 20 00:00:53,270 --> 00:00:57,320 因此,如果我们想要去的地址和 得到诠释在该地址,我们有 21 00:00:57,320 --> 00:01:03,020 解引用这个指针,还按以下方式 明星接线员,写作明星。 22 00:01:03,020 --> 00:01:05,470 >> 接下来,我不想改变 a的值。 23 00:01:05,470 --> 00:01:08,770 我想改变的值 一,牢记,再一次, 24 00:01:08,770 --> 00:01:10,350 a是一个地址。 25 00:01:10,350 --> 00:01:14,050 因此,要做到这一点,我需要再次 要说明星得到。 26 00:01:14,050 --> 00:01:18,360 现在我想提出的价值 那是在B,不是b的值,这 27 00:01:18,360 --> 00:01:19,720 也就是一个地址。 28 00:01:19,720 --> 00:01:22,280 >> 所以,我再次说,星级住宿。 29 00:01:22,280 --> 00:01:26,690 然后在我的最后一行,我需要 覆盖是什么地址b与 30 00:01:26,690 --> 00:01:28,970 什么是在原来的位置。 31 00:01:28,970 --> 00:01:32,910 要做到这一点,我做星级的住宿变得tmp目录。 32 00:01:32,910 --> 00:01:34,820 >> 现在在一天结束时,这 功能还只是 33 00:01:34,820 --> 00:01:35,950 三行代码。 34 00:01:35,950 --> 00:01:39,860 但因为它的操纵值 由它们的地址的方式,而不是 35 00:01:39,860 --> 00:01:43,700 被传递到的原始值 功能,我声称,交换是目前 36 00:01:43,700 --> 00:01:47,670 有权改变值 通过其地址传递。 37 00:01:47,670 --> 00:01:49,510 >> 但我需要一个改变仍然。 38 00:01:49,510 --> 00:01:52,190 我再也不能在传递 x和y本身。 39 00:01:52,190 --> 00:01:55,030 我需要通过在地址 的x和y。 40 00:01:55,030 --> 00:01:58,160 而要做到这一点,我需要一些轻微 不同的符号往上顶。 41 00:01:58,160 --> 00:02:02,510 我希望通过传递交换x和y x的地址,由表示 42 00:02:02,510 --> 00:02:07,190 与符号X和地址 Y,用符号y指示。 43 00:02:07,190 --> 00:02:10,570 >> 同样,往上顶现在,我需要 改变函数的原型 44 00:02:10,570 --> 00:02:14,980 匹配我所做的改变,使 一个是,再次,一个指向int的指针。 45 00:02:14,980 --> 00:02:17,190 b为,同样,一个指向int的指针。 46 00:02:17,190 --> 00:02:18,770 现在我可以挽救我的文件。 47 00:02:18,770 --> 00:02:20,680 并让我们重新编译并运行它。 48 00:02:20,680 --> 00:02:25,330 >> 做掉点斜线交换。 49 00:02:25,330 --> 00:02:29,660 并且此时,x和y是确实现在 交换使得它们的值不 50 00:02:29,660 --> 00:02:31,950 1和2,但2和1。 51 00:02:31,950 --> 00:02:34,900