สวัสดีและยินดีต้อนรับกลับ
เราอยู่ในส่วนใหม่
ในส่วนนี้เราจะไปที่ พูดคุยเกี่ยวกับสตริงอักขระ
คุณคงเคยได้ยินฉันพูด คำว่า string ค่อนข้างน้อยตลอดทั้งชั้นเรียน
และคุณ อาจจะสับสนเล็กน้อย
สตริงเป็นเพียงคำ
เป็นสิ่งที่แนบมา ในเครื่องหมายคำพูดคู่
เราจะมาคุยกันว่าเราจะทำได้อย่างไร เก็บสตริงในอาร์เรย์อักขระ
จนกระทั้งเรา ค่อนข้างคุ้นเคยกับอักขระตัวเดียว, ชนิดข้อมูลถ่าน
หรือประเภทข้อมูล "ห่วงใย" ได้ตามต้องการ เพื่อออกเสียง เรารู้ว่ามันคืออะไร แต่เราไม่ได้เรียนรู้เกี่ยวกับคำศัพท์จริงๆ
ในการกำหนดอักขระตัวเดียวให้กับ ตัวแปร char อักขระอยู่ภายใน
a คู่ของเครื่องหมายอัญประกาศเดี่ยว
เราคุ้นเคยกับสิ่งนี้
เราได้เรียนรู้ทั้งหมดนี้แล้ว
ในตัวอย่างนี้เครื่องหมายบวก เท่ากับบวกภายในเครื่องหมายคำพูดเดียว
สิ่งสำคัญที่นั่น เป็นคำพูดเดียว
คุณได้เรียนรู้ด้วยว่าที่นั่น เป็นความแตกต่างระหว่างอัญประกาศเดี่ยวและอัญประกาศคู่
ดังนั้นหากคุณใส่ตัวแปรเครื่องหมายบวกและ คุณกำหนดบางอย่างในเครื่องหมายคำพูดคู่และเครื่องหมายบวกเป็นประเภท
ถ่านนั่นใช้ไม่ได้เพราะคุณกำหนดได้เพียงตัวเดียว อักขระกับชนิดข้อมูลถ่าน
ค่าคงที่สตริงหรือตัวอักษรสตริง เป็นลำดับของอักขระหรือสัญลักษณ์ระหว่างอัญประกาศคู่
ดังนั้นตอนนี้เครื่องหมายอัญประกาศคู่คือ กำลังจะมาเล่นใหม่
อะไรก็ได้ระหว่างคู่นี้ คอมไพเลอร์ตีความคำพูดเป็นสตริง
และเป็นเช่นนั้นจริงๆ อักขระที่เป็นตัวอักษรและตัวเลขคละกัน
อาจเป็นอักขระพิเศษก็ได้ แต่ มักจะสร้างคำที่คุณสามารถคิดได้ว่าเป็นข้อความ
คุณสามารถมีช่องว่าง
แต่อะไรก็ตามที่เป็นสองเท่า เครื่องหมายคำพูดเป็นตัวอักษรสตริง
ทุกครั้งที่คุณแสดง ข้อความโดยใช้ฟังก์ชัน
printf เราได้กำหนด ข้อความเป็นค่าคงที่สตริง
จำ printf อาร์กิวเมนต์แรก เราใส่ข้อความไว้ข้างในและเรามีตัวระบุรูปแบบ
นั่นคือพยัญชนะสตริง
คุณยังได้ยินคำว่า string แท้จริงมันคือสิ่งเดียวกัน
ดังนั้นเราจึงบอกว่า print f นี่คือสตริง ทุกอย่างในระหว่างนั้น เครื่องหมายคำพูดคู่นั้นเป็นค่าคงที่สตริง
และเราสามารถใส่มันในหนึ่งหรือสองบรรทัด
คุณยังสังเกตเห็นว่าคุณสามารถ มีคำสั่งพิมพ์ที่มีลำดับการหลีกเลี่ยงแบ็กสแลช
n. ตอนนี้ อันที่สามนี้มันเจ๋งมาก ฉันจะอธิบายในอีกสักครู่
แต่ประเด็นหลักคือคุณมี เพื่อทำความเข้าใจความแตกต่างระหว่าง
single quotes และ double คำพูดและสิ่งที่อยู่ในนั้น
ด้วยเครื่องหมายอัญประกาศคู่ คุณมีสตริง
ด้วยคำพูดเดียว คุณมีตัวละคร
ค่าคงที่มีสองประเภท
สำหรับตัวอย่างที่สามนี้ printf . นี้ โดยที่เรามีสี่แล้วเราก็มีแบ็กสแลช
แล้วก็อัญประกาศเดี่ยว
ถ้าคุณต้องการจริงๆ แสดงเครื่องหมายคำพูดเดียวเป็นผลลัพธ์
คุณต้องหลีกเลี่ยงมัน
และคุณสามารถหลบหนีพิเศษ อักขระโดยใช้แบ็กสแลช
ในตัวอย่างที่สาม มันคือ ที่จริงจะพิมพ์อัญประกาศคู่สี่อันที่คุณเขียนออกมา
แล้วก็อัญประกาศคู่อีก
ดังนั้นคอมไพเลอร์ตีความชัดเจน เครื่องหมายอัญประกาศคู่โดยไม่นำหน้าแบ็กสแลชเป็นตัวคั่นสตริง
ทุกครั้งที่คุณใช้ดับเบิ้ล อ้างถึงมันเป็นจุดเริ่มต้นและจุดสิ้นสุดของสตริง
แต่ถ้าคุณต้องการ แสดงมันจากนั้นคุณต้องใส่แบ็กสแลชไว้ข้างหน้า
และมันจะบอกคอมไพเลอร์ว่า เฮ้ นี่ ไม่ได้จบสตริงจริงๆ
เป็นสิ่งที่เราต้องการ เพื่อแสดงหรือสิ่งที่เราต้องการใช้เป็นตัวละครนั้น
นอกจากนี้คุณต้องใช้การหลบหนี ลำดับถ้าคุณต้องการทำแบ็กสแลชเช่นกันเพราะ
แบ็กสแลชเป็นลำดับการหลบหนี
ดังนั้นเมื่อคุณเห็นแบ็กสแลช แบ็กสแลช คุณกำลังแสดงแบ็กสแลชนั้นในฟังก์ชัน
printf
ถ้าเห็นที่อื่น คุณกำลังกำหนดแบ็กสแลชให้กับตัวแปรหรือใช้อย่างไรก็ได้
แต่มีแบ็กสแลชเองตามมา โดยแบ็กสแลชอื่นจะหนีสตริงแบ็กสแลช
และอีกครั้ง แบ็กสแลชและ สตริงจะส่งสัญญาณการเริ่มต้นของลำดับหลีกเสมอ
ดังนั้นหนึ่งเดียวคือ จะไม่แสดง
เหล่านี้เป็นอักขระพิเศษ
ดังนั้นเมื่อคุณอยู่ในเครื่องหมายคำพูดคู่ คุณอาจเห็นแบ็กสแลชเพื่อหนีอักขระพิเศษ
และแม้แต่แบ็กสแลชเอง
นี่คือวิธีที่สตริงอยู่ในหน่วยความจำ
สตริงในหน่วยความจำคือ อักขระแต่ละตัวจะแสดงด้วยบิตที่นี่
ดังนั้นถ้าคุณมีสตริง เรียกว่าเป็นสตริงคุณจะเห็นว่า อวกาศมีบางอย่างอยู่ในความทรงจำ
และควรสังเกตที่ จุดสิ้นสุดที่แบ็กสแลชศูนย์ที่เป็นโมฆะเทอร์มิเนเตอร์
ที่เราจะพูดถึง
แต่สำหรับสายที่สอง อีกครั้ง คุณเห็นทุกอย่างที่อยู่ในความทรงจำ
แม้แต่แบ็กสแลช n ซึ่ง แสดงว่าขึ้นบรรทัดใหม่อยู่ในหน่วยความจำ
แล้วคุณจะ สังเกตว่าใบเสนอราคาอยู่ในหน่วยความจำ
แต่แบ็กสแลชไม่ใช่
เพราะแบ็กสแลช กำลังกำหนดขอบเขตของใบเสนอราคา
มันกำลังหนีคำพูด
นี่คือลักษณะที่ปรากฏในความทรงจำ
คุณควรสังเกตว่าสตริง ในหน่วยความจำจะมีอย่างน้อยหนึ่งไบต์สำหรับแบ็กสแลชนั้นเสมอ
ศูนย์ ซึ่งเป็นอักขระว่าง
ดูเหมือนไดอะแกรม ด้านล่างไม่ถูกต้อง
คุณจะสังเกตเห็นว่า "คุณ" ไม่ปรากฏที่นี่ ดังนั้นหลังจากใบเสนอราคาสองครั้ง คุณจะไม่เห็นคุณที่นั่น
คุณควรจะ
มีที่ไหนสักแห่งและมันเหมือนกับว่ามีที่ไหนสักแห่งที่พวกเขาอยู่จริงๆ
แค่แสดงให้เห็นว่านี่คือค่า ASCII ที่อยู่ข้างใต้ แล้วมันก็คือ แค่โชว์-ไม่โชว์แต่จะชิดขวา
และนั่นคือสิ่งที่ฉันต้องการจะพูด about คืออักขระว่างตัวนี้
เป็นตัวละครพิเศษ โดยมีค่ารหัสเป็นศูนย์
มันถูกเพิ่มที่ส่วนท้ายของแต่ละสตริง เพื่อให้คอมไพเลอร์รู้ว่ามันสิ้นสุดที่ใดและเมื่อคุณรันมัน
อักขระนี้เรียกว่า อักขระ null และคุณไม่เพียงแค่ใส่ศูนย์ลงไป
คุณสามารถใส่แบ็กสแลชศูนย์
และนั่นคือสิ่งที่อยู่ในนี้ สไลด์ก่อนหน้าในตอนท้ายสุด
และอยู่ที่ไหนก็ได้ ในความทรงจำจริงๆ
และขึ้นอยู่กับว่าอยู่ตรงไหนใน หน่วยความจำฟังก์ชันจะไปดูจนเห็นว่า
แบ็กสแลชศูนย์และมันอาจแสดงหรืออาจจัดการถ้าคุณเป็น โดยใช้ฟังก์ชันสตริงต่างๆ
มันเป็นสิ่งสำคัญมาก อักขระว่างนั้น
สตริงจะสิ้นสุดเสมอ ด้วยอักขระว่าง
ดังนั้นความยาวของสตริงคือ มากกว่าจำนวนอักขระในสตริงเสมอ
นี่จะกลายเป็นเรื่องสำคัญมาก เมื่อเราใช้อาร์เรย์อักขระและเราระบุขนาดของ
array ขนาดอาร์เรย์จะต้องมากกว่าหนึ่งเสมอ อักขระจำนวนมากที่คุณต้องการจัดเก็บเนื่องจากอักขระว่างนี้
เรายังมีแนวคิดของ null ที่เรายังไม่ได้พูดถึงในรายละเอียดมากนัก
มักจะเข้ามาเล่น เมื่อเราพูดถึงพอยน์เตอร์
แต่อย่าสับสนกับค่าว่าง อักขระที่มีคีย์เวิร์ด null
ดังนั้นจึงมี null คีย์เวิร์ดหนึ่งใน รวมส่วนหัวที่คุณสามารถใช้ได้
และนี่คือสัญลักษณ์ที่ แสดงถึงที่อยู่หน่วยความจำที่ไม่อ้างอิงอะไรเลย
ดังนั้นคุณจึงใช้เมื่อคุณ เมื่อคุณใช้พอยน์เตอร์
อักขระว่างเป็นเพียง เทอร์มิเนเตอร์สตริง
เราจะพูดถึงค่า null มากขึ้นเมื่อเรา พูดคุยเกี่ยวกับคำแนะนำ แต่ให้แน่ใจว่าคุณเข้าใจความแตกต่างระหว่าง
อักขระ null และคีย์เวิร์ด null
คุณสามารถเพิ่มอักขระศูนย์แบ็กสแลช ที่ส่วนท้ายของสตริงอย่างชัดเจน
และสิ่งนี้จะสร้างสองสตริงและ ฉันจะแสดงวิธีการทำสิ่งนี้เมื่อเราพูดถึงการกำหนดอาร์เรย์อักขระ
นี่คือตัวอย่างกับ เทอร์มิเนเตอร์ที่เป็นโมฆะ
เรามีการพิมพ์ f ที่นี่และเราพูดว่า อักขระแล้วเครื่องหมายแบ็กสแลชที่สิ้นสุดสตริง
ดังนั้นจะเกิดอะไรขึ้นถ้าคุณ คอมไพล์และรันโปรแกรมนี้
ผลลัพธ์ที่คุณจะได้รับคือ บรรทัดแรกจะเป็นอักขระ
แล้วตามด้วยแบ็กสแลช o มันกำลังจะจบลงและมีเพียงส่วนแรกของ สตริงที่จะแสดง
จะไม่มีอีกแล้ว ออกเพราะพิมพ์คิดว่ามันเป็นจุดสิ้นสุดของสตริง
ดังนั้นมันก็แค่พิมพ์ตัวอักษรออกมา
เอาต์พุตจะสิ้นสุดหลังจาก สองคำแรกนั้นเพราะฟังก์ชันหยุดแสดงผลครั้งเดียว
มันถึงอักขระว่าง
ดังนั้นแบ็กสแลชที่สองศูนย์ที่ ท้ายสตริง ดังนั้นแม้ว่าคุณจะไม่เห็นเครื่องหมายแบ็กสแลชศูนย์
ตรงนี้ก่อนอัญประกาศคู่สิ้นสุด หลังสตริงดอท ยังมีอยู่
แต่เธอไม่มีวันเข้าถึง
ดังนั้นจึงมีตัวยุติเป็นโมฆะโดยปริยาย ที่ส่วนท้ายของสตริงและ printf เพื่อให้รู้ว่าจะสิ้นสุดที่ใด
และถ้าเพิ่มอีกก็เพียง จะแสดงถึงอันแรกนั้น
ตัวสิ้นสุดค่าว่างตัวแรกนั่นคือ ที่พบในชุดอักขระจะทำเครื่องหมายจุดสิ้นสุดของสตริงเสมอ
เข้าใจอักขระว่างเหล่านี้
นี่เป็นเพียงภาพรวมโดยย่อ เพื่ออธิบายว่าสตริงคืออะไรและเข้าใจว่า
สตริงอยู่ในเครื่องหมายคำพูดคู่
และฉันก็ต้องการที่จะอธิบายด้วย อักขระที่เป็นโมฆะ
ในการบรรยายครั้งต่อไป เราจะ ทำความเข้าใจว่าสตริงอักขระคืออะไรในแง่ของวิธีสร้าง
ตัวแปรประเภทนี้แตกต่างกันในการจัดเก็บสตริง
ขอขอบคุณ.