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