1 00:00:00,000 --> 00:00:00,520 2 00:00:00,520 --> 00:00:03,530 >> 演講嘉賓:讓我們寫一個程序, 提示輸入兩個字符串和用戶 3 00:00:03,530 --> 00:00:07,170 然後報告是否這些字符串 是相同的或不相同的。 4 00:00:07,170 --> 00:00:10,290 我已經開始我們在這裡下車了 調用printf的兩次調用 5 00:00:10,290 --> 00:00:14,520 GetString引發該異常兩次,存儲返回 在s和t,價值分別。 6 00:00:14,520 --> 00:00:17,960 >> 現在,我的直覺來比較這兩個 字符串是使用熟悉的 7 00:00:17,960 --> 00:00:19,160 相等運算符 - 8 00:00:19,160 --> 00:00:22,070 如果s等於等於萬噸。 9 00:00:22,070 --> 00:00:28,120 然後我會繼續前進,打印 出“你鍵入同樣的事情! 10 00:00:28,120 --> 00:00:35,190 否則,如果這不是真的,我只是 將輸入的printf(“你輸入的 11 00:00:35,190 --> 00:00:37,880 不同的東西! 12 00:00:37,880 --> 00:00:38,850 >> 相當簡單 - 13 00:00:38,850 --> 00:00:41,820 我只是比較對陣 噸,如果他們是平等的, 14 00:00:41,820 --> 00:00:43,250 打印出一樣多。 15 00:00:43,250 --> 00:00:45,450 讓我們來編譯並運行這個程序。 16 00:00:45,450 --> 00:00:51,950 做比較0 /比較 0,想說什麼,你好, 17 00:00:51,950 --> 00:00:54,200 說些什麼,你好。 18 00:00:54,200 --> 00:00:56,870 >> 不幸的是,該方案認為我已經 類型不同的東西,即使我 19 00:00:56,870 --> 00:00:59,530 明確輸入“你好”的 同樣的方式兩次。 20 00:00:59,530 --> 00:01:00,850 現在,為什麼會這樣呢? 21 00:01:00,850 --> 00:01:03,750 >> 嗯,事實證明,這一切 時間,字符串已經有點多 22 00:01:03,750 --> 00:01:06,780 比字符序列複雜 引擎蓋下方。 23 00:01:06,780 --> 00:01:11,450 在現實中,一個字符串是一個指針或 地址,特別是地址 24 00:01:11,450 --> 00:01:14,640 在該第一個字符的 字符序列。 25 00:01:14,640 --> 00:01:18,640 >> 所以,當我們向T比較s 與同等等號,我們 26 00:01:18,640 --> 00:01:23,200 其實是問,是這個地址 等於等於這個地址? 27 00:01:23,200 --> 00:01:26,850 而這不會是這樣,如果 用戶在兩種不同的已鍵入 28 00:01:26,850 --> 00:01:30,370 字符串和我們所謂的GetString兩次 讓他們,因為內存 29 00:01:30,370 --> 00:01:34,480 該GetString的用於存儲所述第一 字符串可能這裡在RAM中,但 30 00:01:34,480 --> 00:01:37,120 這GetString的用來存儲內存 第二個字符串是怎麼回事 31 00:01:37,120 --> 00:01:38,760 在這裡在RAM中。 32 00:01:38,760 --> 00:01:42,380 當然,那麼,這兩個大塊 內存有不同的地址 33 00:01:42,380 --> 00:01:44,220 他們的第一個字符。 34 00:01:44,220 --> 00:01:46,120 >> 所以是S等於等於t? 35 00:01:46,120 --> 00:01:46,885 嗯,沒有。 36 00:01:46,885 --> 00:01:50,510 如果s和t都指向不同的 內存塊,因為他們將通過 37 00:01:50,510 --> 00:01:54,140 調用GetString的兩倍,他們不是, 實際上,將是相同的。 38 00:01:54,140 --> 00:01:57,700 因此它似乎是這樣的情況,以 在直觀比較兩個字符串 39 00:01:57,700 --> 00:02:01,050 我們期待的方式,字符 字符,我們需要另一種技術 40 00:02:01,050 --> 00:02:02,300 乾脆。 41 00:02:02,300 --> 00:02:03,902