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 สองครั้งการจัดเก็บผลตอบแทน ค่าในและทีตามลำดับ 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 ฉันเพียงแค่การเปรียบเทียบต่อต้าน T, และหากพวกเขากำลังเท่ากัน 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 >> และดังนั้นเมื่อเราเปรียบเทียบกับเสื้อ 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 ที่ใช้ในการจัดเก็บครั้งแรก สตริงอาจจะอยู่ที่นี่ในแรม แต่ 30 00:01:34,480 --> 00:01:37,120 หน่วยความจำที่ GetString ใช้ในการเก็บ สายที่สองจะ 31 00:01:37,120 --> 00:01:38,760 จะอยู่ที่นี่ในแรม 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 หากเสื้อและจะชี้ไปที่แตกต่างกัน ชิ้นของหน่วยความจำที่พวกเขาจะได้รับโดย 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