>> ลำโพง: ใ​​ห้เขียนโปรแกรมที่ แจ้งให้ผู้ใช้สองสายและ
แล้วรายงานว่าสตริงที่ จะเหมือนกันหรือไม่เหมือนกัน
ผมได้เริ่มต้นกับเราแล้วออกจากที่นี่โดย โทร printf สองครั้งและเรียก
getString สองครั้งการจัดเก็บผลตอบแทน ค่าในและทีตามลำดับ
>> ตอนนี้สัญชาตญาณของฉันที่จะเปรียบเทียบทั้งสอง สตริงจะใช้คุ้นเคย
ความเสมอภาคประกอบการ -
ถ้า s เท่ากับเท่ากับเสื้อ
แล้วฉันจะไปข้างหน้าและการพิมพ์ ออกมาว่า "คุณพิมพ์ในสิ่งเดียวกัน
อื่นหากที่ไม่เป็นความจริงฉันเพียงแค่ จะพิมพ์ printf ("คุณพิมพ์
สิ่งที่แตกต่างกัน
>> ตรงไปตรงมาเป็นธรรม -
ฉันเพียงแค่การเปรียบเทียบต่อต้าน T, และหากพวกเขากำลังเท่ากัน
พิมพ์ออกมากที่สุดเท่าที่
ลองคอมไพล์และรันโปรแกรมนี้
ให้เปรียบเทียบ 0. / เปรียบเทียบ 0, พูดอะไรบางอย่างสวัสดี
พูดอะไรบางอย่างสวัสดี
>> แต่น่าเสียดายที่โปรแกรมคิดว่าฉันได้ พิมพ์สิ่งที่แตกต่างแม้ว่าฉัน
พิมพ์ได้อย่างชัดเจน "สวัสดี" เช่นเดียวกับทั้งสองครั้ง
ตอนนี้เหตุผลที่ว่าอาจจะมี
>> ดีก็ปรากฎว่าทั้งหมดนี้ เวลาสตริงได้รับน้อยมาก
ที่ซับซ้อนกว่าลำดับของตัวอักษร ภายใต้กระโปรงหน้ารถ
ในความเป็นจริงสตริงเป็นตัวชี้หรือ ที่อยู่โดยเฉพาะที่อยู่
ของอักขระตัวแรกในที่ ลำดับของตัวอักษร
>> และดังนั้นเมื่อเราเปรียบเทียบกับเสื้อ s ด้วยเครื่องหมายเท่ากับเท่ากับเรา
จริงขอให้เป็นที่อยู่นี้ เท่ากับเท่ากันไปยังที่อยู่นี้
และที่จะไม่เป็นกรณีที่หาก ผู้ใช้มีการพิมพ์ในสองที่แตกต่างกัน
สตริงและเราได้เรียก GetString สองครั้ง ที่จะได้รับพวกเขาเพราะหน่วยความจำ
GetString ที่ใช้ในการจัดเก็บครั้งแรก สตริงอาจจะอยู่ที่นี่ในแรม แต่
หน่วยความจำที่ GetString ใช้ในการเก็บ สายที่สองจะ
จะอยู่ที่นี่ในแรม
และแน่นอนแล้วทั้งสองชิ้น หน่วยความจำมีที่อยู่ที่แตกต่างกัน
ตัวอักษรแรกของพวกเขา
>> ดังนั้น s เท่ากับเท่ากับ t?
ดีไม่มี
หากเสื้อและจะชี้ไปที่แตกต่างกัน ชิ้นของหน่วยความจำที่พวกเขาจะได้รับโดย
โทร GetString สองครั้งที่พวกเขากำลังไม่ได้ ในความเป็นจริงจะเป็นเช่นเดียวกัน
ดังนั้นจึงน่าจะเป็นกรณีที่ เปรียบเทียบสองสายในที่ใช้งานง่าย
วิธีการที่เราคาดหวังอักขระสำหรับ ตัวละครที่เราต้องใช้เทคนิคอื่น
โดยสิ้นเชิง