สวัสดี ยินดีต้อนรับกลับมา นี่จะเป็นการมอบหมายครั้งสุดท้ายของเรา ความท้าทายสุดท้ายของเราสำหรับส่วนตัวชี้ของเรา
ในความท้าทายนี้ ฉันต้องการให้คุณเข้าใจว่าการจัดสรรหน่วยความจำแบบไดนามิกทำงานอย่างไร
ดังนั้นคุณจะต้อง Malloc สตริง
มันจะค่อนข้างพื้นฐาน
แต่จะทำให้คุณเข้าใจแนวคิดทั้งหมดของการจัดสรรหน่วยความจำแบบไดนามิก
ข้อดีของการจัดสรรหน่วยความจำแบบไดนามิกคืออะไร?
หมายความว่าคุณสามารถจัดสรรหน่วยความจำเพียงพอเมื่อคุณต้องการ
คุณไม่ต้องเสียความทรงจำ และถ้าคุณต้องการหน่วยความจำเพิ่ม คุณสามารถจัดสรรใหม่ได้
งานนี้แค่ให้คุณใช้ malloc
ดังนั้นในความท้าทายนี้ คุณจะต้องเขียนโปรแกรมที่ทดสอบความเข้าใจของคุณเกี่ยวกับการจัดสรรหน่วยความจำแบบไดนามิก
ฉันต้องการให้คุณเขียนโปรแกรมที่อนุญาตให้ผู้ใช้ป้อนสตริงข้อความ
ดังนั้นคุณจะต้องใช้ scanf คุณยังสามารถใช้ git s ได้ เราไม่ได้พูดถึงมันมาก
แต่ git s หรือ f git s บนสตรีมอินพุตมาตรฐานจะช่วยให้คุณสามารถอ่านสตริงที่มีช่องว่างได้
จำไว้ว่า
scanf มันจะอ่านสตริงจนถึงช่องว่างเท่านั้น
หากคุณใช้ git s คุณสามารถอ่านหลายสตริงโดยคั่นด้วยช่องว่าง ทั้งสองวิธีก็ใช้ได้
แต่ scanf หรือ git s ทั้งสองวิธี
คุณจะต้องให้ผู้ใช้ป้อนสตริง โปรแกรมกำลังพิมพ์ข้อความที่ป้อน
อาจดูง่ายมาก แต่ความแตกต่างคือโปรแกรมจะใช้การจัดสรรหน่วยความจำแบบไดนามิก
คุณยังสามารถให้ผู้ใช้ป้อนขีดจำกัดของสตริงที่พวกเขากำลังป้อน
จากนั้นคุณสามารถใช้ค่านั้นกับ malloc ได้ ดังนั้นคุณจะรู้ว่าต้องจัดสรรกี่ไบต์
คุณควรสร้างตัวชี้อักขระ เฉพาะตัวชี้อักขระ ไม่มีอาร์เรย์อักขระ
ฉันต้องการให้คุณจัดสรรหน่วยความจำ จำไว้ว่า เมื่อคุณสร้างอาร์เรย์อักขระ
หน่วยความจำจะถูกจัดสรรโดยอัตโนมัติสำหรับคุณตามขนาดที่คุณใส่ในวงเล็บ
และอีกครั้ง
ข้อเสียใหญ่ของสิ่งนั้นคือตอนนี้ ถ้าคุณพยายามป้อนสิ่งที่ใหญ่กว่าที่คุณใส่ในขนาด คุณต้องคอมไพล์ใหม่
มันคงที่ หน่วยความจำนั้นได้รับการจัดสรรในเวลารวบรวม
หน่วยความจำแบบไดนามิกได้รับการจัดสรรเมื่อคุณใช้งานโปรแกรม
เพื่อให้คุณสามารถกำหนดจำนวนหน่วยความจำที่คุณต้องการจัดสรรตามสิ่งที่ผู้ใช้ป้อน
ดังนั้นอีกครั้ง ขอให้ผู้ใช้ป้อนตัวเลขสำหรับจำนวนไบต์ที่คุณต้องการจัดสรรให้กับสตริง
จากนั้นให้ผู้ใช้ป้อนสตริงเข้าไป
และคุณต้องจัดสรรหน่วยความจำให้ถูกต้อง จากนั้นจึงส่งตัวชี้อักขระนั้นไปที่
scanf หรือ git s จากนั้นแสดงเฉพาะข้อความที่ป้อน
และสุดท้าย อย่าลืมฟังก์ชั่นฟรีที่สำคัญทั้งหมด
คุณต้องการปล่อยหน่วยความจำของคุณเสมอเมื่อคุณใช้งานเสร็จแล้ว และคุณต้องการให้แน่ใจว่าคุณทำเช่นนั้นเพื่อให้โปรแกรมอื่นสามารถใช้หน่วยความจำนั้นได้
หน่วยความจำเป็นทรัพยากรที่หายาก
โดยเฉพาะอย่างยิ่งในโปรแกรมเรียลไทม์ระบบฝังตัว ดังนั้นอย่าใช้หน่วยความจำมากเกินไป
ให้ปล่อยมัน
โชคดีและฉันจะให้ทางออกในการบรรยายครั้งต่อไป ขอขอบคุณ.