สวัสดีและยินดีต้อนรับกลับ มาพูดคุยกันต่อเกี่ยวกับโครงสร้างและพูดคุยกันว่าพวกมันเกี่ยวข้องกับอาร์เรย์อย่างไร
เราได้พูดถึงโครงสร้างที่คล้ายกับอาร์เรย์ และคุณสามารถจัดเก็บค่าได้มากกว่าหนึ่งค่า
แต่ค่าเหล่านี้ต่างกันเพราะคุณสามารถมีประเภทข้อมูลที่แตกต่างกัน และคุณสามารถจัดกลุ่มได้ด้วยวิธีนี้
แต่คุณยังสามารถมีอาร์เรย์ของโครงสร้างได้เหมือนกัน
ดังนั้น คุณได้เห็นแล้วว่าโครงสร้างมีประโยชน์เพียงใด และช่วยให้คุณสามารถจัดกลุ่มองค์ประกอบที่เกี่ยวข้องอย่างมีตรรกะได้
เราได้เห็นแล้วว่า เรารู้วิธีกำหนดโครงสร้างด้วยองค์ประกอบต่างๆ
โดยใช้คีย์เวิร์ด struct โดยใช้ชื่อแท็ก
และเรารู้วิธีสร้างตัวแปรประเภทนั้นด้วย
เนื่องจากโครงสร้างเป็นข้อมูลประเภทใหม่ที่คุณสามารถใช้ได้
จากนั้นคุณสามารถเข้าถึงองค์ประกอบของโครงสร้างโดยใช้ตัวดำเนินการการเลือกสมาชิก
ถ้าคุณต้องการสร้างหลายโครงสร้างที่อยู่ภายในอาร์เรย์
คุณสามารถทำได้
ตัวอย่างเช่น จำเป็นต้องติดตามตัวแปรหนึ่งตัวเท่านั้น แทนที่จะเป็นสามตัวแปรสำหรับแต่ละวันที่ที่โปรแกรมใช้
นั่นคือข้อดีของโครงสร้าง
หากเราต้องการจัดการวันที่ต่างกัน 10 วันในโปรแกรม
เราต้องติดตามตัวแปร 10 ตัวแทนที่จะเป็น 30 ตัว
เพราะอย่าลืมว่าโครงสร้างประกอบด้วยตัวแปรสามตัวในตัวมันเอง
10 สำหรับตัวแปรที่แตกต่างกันยังคงมีจำนวนมาก
ดังนั้นจึงไม่ใช่วิธีที่ดีที่สุด คุณอาจต้องการสร้างอาร์เรย์
เพราะคุณจะมีสิ่งเดียวกัน 10 แบบเหมือนกับที่คุณมี 10
int เหมือนกัน มีแต่แบบโครงสร้าง
ดังนั้น วิธีที่ดีกว่าในการจัดการวันที่ต่างกัน 10
วันจึงเกี่ยวข้องกับการผสมผสานระหว่างคุณลักษณะที่มีประสิทธิภาพสองอย่างของภาษาซี
โครงสร้าง และอาร์เรย์
คุณสามารถใช้ร่วมกันเพื่อให้มีประสิทธิภาพมากยิ่งขึ้น
ดังนั้น จึงถูกต้องสมบูรณ์ที่จะกำหนดอาร์เรย์ของโครงสร้าง แนวคิดของอาร์เรย์ของโครงสร้างเป็นแนวคิดที่ทรงพลังและสำคัญมากใน
c ดังนั้นให้ใส่ใจอย่างใกล้ชิด
การประกาศอาร์เรย์ของโครงสร้างก็เหมือนกับการประกาศอาร์เรย์ประเภทอื่นๆ
คุณระบุประเภทเพื่อให้เกิดเป็นประเภทโครงสร้าง
ดังนั้น ถ้าคุณต้องการสร้างอาร์เรย์ของโครงสร้างที่ตั้งชื่อว่า
date คุณจะต้องระบุ struct date ตามด้วยชื่อตัวแปร
จากนั้นคุณใช้วงเล็บ เช่นเดียวกับที่คุณใช้วงเล็บสำหรับอาร์เรย์อื่นๆ
คุณต้องระบุขนาด
ดังนั้น ในกรณีนี้ หากเรากำลังสร้าง 10 อินสแตนซ์หรือ 10 องค์ประกอบของประเภทโครงสร้างวันที่
เราจะบอกว่า 10 ภายในวงเล็บเหล่านั้นสำหรับเครื่องหมาย
ดังนั้น นี่จะกำหนดอาร์เรย์ที่เรียกว่าวันที่ของฉัน ซึ่งประกอบด้วย 10 องค์ประกอบ
แต่ละองค์ประกอบภายในอาร์เรย์ถูกกำหนดเป็นวันที่ struct ชนิด
bf ซึ่งประกอบด้วยสมาชิกสามคน
โดยพื้นฐานแล้วสิ่งที่คุณทำคือคุณกำลังจัดเก็บข้อมูล
30 ชุดที่แตกต่างกัน 30 องค์ประกอบข้อมูลที่แตกต่างกัน
ในการระบุสมาชิกของอาร์เรย์ของโครงสร้าง คุณต้องใช้กฎเดียวกันกับที่คุณใช้สำหรับแต่ละโครงสร้าง
คุณยื่นชื่อโครงสร้างด้วยตัวดำเนินการ dot แล้วตามด้วยชื่อสมาชิก
การอ้างอิงองค์ประกอบโครงสร้างเฉพาะภายในอาร์เรย์นั้นค่อนข้างเป็นธรรมชาติ
ในการตั้งค่าวันที่ที่สองภายในอาร์เรย์วันที่ของฉันเป็น 8 สิงหาคม 1986
สิ่งที่คุณต้องทำคือคุณระบุชื่ออาร์เรย์ วันที่ของฉัน
และระบุดัชนี เรากำลังระบุวันที่สองที่นี่
จำไว้ว่าอาร์เรย์เป็น 0 ตาม เราจึงบอกว่า 1, ย่อย-1
แล้วถ้าเราต้องการเข้าถึงองค์ประกอบขององค์ประกอบอาร์เรย์นั้นหรือสมาชิกของโครงสร้างนั้นสำหรับองค์ประกอบนั้น
เราเรียกว่า dot month
นี่จะให้องค์ประกอบที่สองแก่เราในอาร์เรย์วันที่
ค่าเดือนสำหรับประเภทโครงสร้างนั้น และที่นี่เราจะกำหนดค่าเป็น 8
แล้วถ้าเราต้องการเข้าถึงวันนั้น เราก็กำหนดวันที่
8 ด้วย เพราะเป็นวันที่ 8 สิงหาคม และสุดท้าย สำหรับปี เราจะบอกว่าจุดปีเท่ากับ
1986
นี่คือวิธีที่คุณสามารถกำหนดให้กับองค์ประกอบที่สองของอาร์เรย์วันที่ของฉัน ซึ่งเป็นตัวแปรที่แตกต่างกันสามตัวเนื่องจากเป็นประเภท
struct, date struct
คุณควรสังเกตว่ามันไม่ต่างกันเลย
ข้อแตกต่างเพียงอย่างเดียวคือคุณมีจุด โดยปกติ คุณจะบอกว่าวันที่ย่อย 1 ของฉัน และนั่นอาจเป็นเพราะคุณสามารถกำหนดตัวแปรได้เพียงตัวเดียวเท่านั้น
ขึ้นอยู่กับประเภทของอาร์เรย์นั้น
แต่ในกรณีนี้ คุณสามารถพูด sub-1 ด้วยตัวแปรที่แตกต่างกันสามตัว เพราะนั่นคือสามองค์ประกอบภายในโครงสร้าง
การเริ่มต้นอาร์เรย์ของโครงสร้าง
การเริ่มต้นอาร์เรย์ที่มีโครงสร้างคล้ายกับการเริ่มต้นอาร์เรย์หลายมิติ
โปรดจำไว้ว่า ด้วยอาร์เรย์หลายมิติ เราจะทำตามไวยากรณ์เฉพาะด้วยวงเล็บปีกกาด้านนอก
จากนั้นวงเล็บปีกกาด้านในแทนแต่ละแถว
จริงๆ แล้ว เหล็กจัดฟันแบบหยิกด้านในนั้นเป็นทางเลือก
แต่มันทำให้อ่านง่ายขึ้นมาก ดังนั้นฉันจึงชอบที่จะปฏิบัติตามอนุสัญญานั้น
ในตัวอย่างนี้ เรากำลังสร้างวันที่ของฉันเป็นวันที่ของโครงสร้างประเภท
ซึ่งจะมีขนาด 5 จากนั้นเราจะเริ่มต้นเฉพาะสามองค์ประกอบแรกเท่านั้น
เช่นเดียวกับอาร์เรย์หลายมิติ เรามีวงเล็บปีกกาอยู่ภายใน
ดังนั้นองค์ประกอบแรกในอาร์เรย์วันที่ของฉันซึ่งเป็นดัชนีศูนย์ย่อย
เราจะบอกว่าเดือนคือ
12 วันที่คือ 10 ปีคือปี 1975
แล้วเราจะทำเช่นเดียวกันกับองค์ประกอบแรก เราจะบอกว่า 12 30 1980
และสำหรับองค์ประกอบที่สาม เราจะพูดถึง 11 15 2005
และเนื่องจากเราไม่ได้จัดหาองค์ประกอบอีกสององค์ประกอบในอาร์เรย์วันที่ของฉัน
สิ่งเหล่านี้จะไม่ถูกเตรียมข้อมูลเบื้องต้นใดๆ
ดังนั้น นี่จะกำหนดสามวันแรก
ในอาร์เรย์วันที่ของฉันถึง 12
10 1975, 12 30 1980 และ 11 15 2005
ระยะเวลาในการจัดฟันเป็นทางเลือก เช่นเดียวกับในพื้นที่หลายมิติ ไม่จำเป็นเช่นกัน
แต่อีกครั้งที่มันทำให้อ่านง่ายขึ้น ปฏิบัติตามได้ง่ายขึ้นด้วยเหล็กจัดฟันด้านในเหล่านั้น
ฉันจะทำตามแบบแผนนั้น
ดังนั้น คุณสามารถทำเช่นนี้ได้หากต้องการกำจัดเหล็กจัดฟัน
แต่มันยากกว่าที่จะปฏิบัติตาม เพราะตอนนี้คุณมีเพียงเครื่องหมายจุลภาค
คั่นด้วยเครื่องหมายจุลภาคหรือองค์ประกอบที่คั่นด้วยเครื่องหมายจุลภาค และอาจทำให้สับสนได้หากคุณทำมาก
ของพวกนั้น
คุณต้องแมปให้ถูกต้อง สมมติว่าฉันอยู่ในองค์ประกอบที่สี่ขององค์ประกอบที่สี่สำหรับเครื่องหมายจุลภาคที่สี่
ตกลงที่จะเป็นองค์ประกอบที่สองของอาร์เรย์ มันยากที่จะติดตาม
ดังนั้นให้ใช้วงเล็บปีกกาที่อยู่ในวงเล็บปีกกา
หากคุณต้องการเริ่มต้นเพียงองค์ประกอบที่สามของอาร์เรย์เป็นค่าที่ระบุ
คุณสามารถระบุวันที่ย่อย -5 ของฉันได้
คุณยังคงสร้างอาร์เรย์ที่นี่
คุณยังคงประกาศตัวแปรและตั้งค่าขนาดเป็นห้า
แต่ในวงเล็บปีกกา คุณกำลังพูดถึงวงเล็บใน
2 อัน และกำลังจะเริ่มต้น 2 ถึง
12 10 1975
ดังนั้น คุณจะเห็นวงเล็บเหลี่ยมที่แสดงองค์ประกอบที่คุณต้องการเริ่มต้น
จากนั้นตัวดำเนินการมอบหมายจะเท่ากับ จากนั้นในวงเล็บปีกกา
คุณจะเริ่มต้นเดือน วัน และปีสำหรับองค์ประกอบภายในโครงสร้าง
ดังนั้นคุณจึงสามารถระบุได้ว่าองค์ประกอบใดที่คุณต้องการเริ่มต้นด้วยเช่นกัน
หากคุณต้องการเพียงแค่ตั้งค่าเดือนและวันที่องค์ประกอบที่สองของอาร์เรย์วันที่ของฉันเป็น 12 และ
30 คุณสามารถทำสิ่งที่คล้ายกันมาก
คุณเพียงแค่ใส่เครื่องหมายจุลภาคเพื่อแยกแต่ละแอตทริบิวต์
คุณไม่ต้องการกำหนดปีจริงๆ ดังนั้นคุณจึงต้องการใช้เหล็กดัดโค้งเหล่านั้นได้
คุณอาจบอกว่า dot month เท่ากับ
12 sub-1 dot day เท่ากับ 30
และอีกครั้ง ไวยากรณ์นี้ดูคล้ายกับการเริ่มต้นตัวแปร
struct ที่อื่นมาก
ข้อแตกต่างเพียงอย่างเดียวที่นี่คือเพราะเป็นอาร์เรย์ คุณต้องระบุดัชนีของอาร์เรย์
แต่ไวยากรณ์ที่คล้ายกัน
โครงสร้างที่มีอาร์เรย์เป็นอย่างไร
องค์ประกอบภายในโครงสร้างที่มีอาร์เรย์
นอกจากนี้ยังสามารถค้นหาโครงสร้างที่มีอาร์เรย์เป็นสมาชิกได้
นี้อาจเป็นประโยชน์
การใช้งานทั่วไปคือการตั้งค่าอาร์เรย์ของอักขระภายในโครงสร้าง
เราใช้อาร์เรย์ถ่านค่อนข้างน้อยสำหรับสตริง
ดังนั้น จึงเป็นเรื่องธรรมดามากที่โครงสร้างจะมีสตริง โดยพื้นฐานแล้วคืออาร์เรย์อักขระ
สมมติว่าคุณต้องการกำหนดโครงสร้างที่เรียกว่า
month ซึ่งประกอบด้วยสมาชิก จำนวนวันในเดือน ตลอดจนตัวย่อสามอักขระสำหรับชื่อเดือน
นั่นคือที่ที่เราสามารถใช้อาร์เรย์อักขระได้ เราสามารถพูดเดือนโครงสร้าง
เรารู้วิธีกำหนดโครงสร้าง อีกครั้งนี้ไม่ได้จัดสรรหน่วยความจำใด ๆ
นี่คือวิธีการกำหนดโครงสร้าง เหล่านี้เป็นองค์ประกอบที่มีอยู่ภายในของมัน
ที่นี่เราใช้คีย์เวิร์ด struct เราพูดชื่อของโครงสร้าง ชื่อแท็กคือเดือน จากนั้นเรามีวงเล็บปีกกาด้านซ้าย
จากนั้นเราระบุองค์ประกอบ
เรามีหนึ่งองค์ประกอบที่เป็นจำนวนเต็มแทนจำนวนวันที่เรามีอัฒภาคที่ส่วนท้าย
แล้วเราก็มีอาร์เรย์อักขระ ชื่ออักขระย่อยสาม
ดังนั้นขนาดสามเพราะมีอักขระสามตัว
จากนั้นเราก็ปิดโครงสร้างด้วยวงเล็บปีกกาด้านขวาในเครื่องหมายอัฒภาค
แต่จำไว้ว่า อักขระคืออาร์เรย์ และพวกมันมีความเกี่ยวข้องอย่างใกล้ชิดกับพอยน์เตอร์ และเรารู้อยู่แล้วว่าในตอนนี้
แต่คุณสามารถมีโครงสร้างที่มีอาร์เรย์ได้ง่ายๆ เพียงแค่ใส่ไว้เป็นองค์ประกอบสมาชิก
ดังนั้นสิ่งนี้จึงสร้างโครงสร้างเดือนที่มีสมาชิกจำนวนเต็มที่เรียกว่าจำนวนวันและสมาชิกตัวละครชื่อชื่อ
ชื่อสมาชิกเป็นอาร์เรย์ของอักขระสามตัว ตรงไปตรงมาทีเดียว
แล้วคุณจะเข้าถึงได้อย่างไร ก่อนอื่นคุณต้องสร้างตัวแปรของคุณ
ตัวแปรจะสร้างหน่วยความจำสำหรับองค์ประกอบภายใน struct จากนั้นคุณจะต้องการตั้งค่าฟิลด์ที่เหมาะสมภายในตัวแปร
8 เดือน ซึ่งเป็นอาร์เรย์อักขระเพราะนั่นคือชื่อของมัน
เรามีชื่อและจำนวนวัน
นี่เรียกว่าชื่อและตัวอย่างเรียกว่าเดือน
เดือนคือประเภทตัวแปร แล้วชื่อคือประเภทองค์ประกอบ ถูกต้องแล้ว
ดังนั้นที่นี่เราสร้างโครงสร้าง เป็นประเภทเดือน
มันคือชื่อตัวแปรคือเดือน เราไม่ได้เริ่มต้นมันด้วยอะไร
เรากำหนดจำนวนวันของเดือนเป็น 31 ทันที
เราใช้ตัวดำเนินการเลือกสมาชิกดอทนั้น
จากนั้นเราต้องการกำหนดให้กับอาร์เรย์อักขระ เราไม่สามารถกำหนดให้กับอาร์เรย์อักขระได้โดยตรง
คุณต้องทำการเปรียบเทียบ str หรือบางอย่างถ้าคุณต้องการเซ็นทุกอย่าง และคุณก็ทำได้
คุณไม่จำเป็นต้องใช้ดัชนีเหล่านี้ คุณสามารถพูดว่า str copy
a month dot name comma แล้ว j a n ใน double quotes
หรือคุณสามารถทำสิ่งนี้โดยที่คุณเข้าถึงองค์ประกอบของอาร์เรย์ผ่านดัชนี
ที่นี้เรากำลังพูดถึงชื่อจุดเดือนเพราะเราต้องเข้าถึงตัวแปรชื่อสมาชิกหรือองค์ประกอบสมาชิก
จากนั้นในวงเล็บ เราระบุดัชนีของอาร์เรย์
เราจะพบว่ามันเซ็นชื่ออักขระตัวแรกในอาร์เรย์ของ j ตัวที่สอง a ตัวที่สาม n
คุณจะเห็นไวยากรณ์นี้ถ้าคุณทำ ints และ
doubles และ floats โดยปกติ เมื่อคุณมีอาร์เรย์อักขระ
คุณจะใช้ฟังก์ชัน str stir copy และกำหนดทุกอย่างด้วยเครื่องหมายคำพูดคู่
คุณยังสามารถเริ่มต้นตัวแปรให้เป็นค่าเดียวกันได้โดยทำสิ่งที่คล้ายกันมากเมื่อคุณประกาศตัวแปร
เพียงแค่อยู่ในวงเล็บปีกกาเพราะเป็นอาร์เรย์
คุณสามารถมีวงเล็บปีกกาด้านในแล้วใส่เครื่องหมายอัญประกาศเดี่ยวรอบอักขระแต่ละตัวได้
และคุณสามารถตั้งค่าโครงสร้าง 12 เดือนภายในอาร์เรย์เพื่อแสดงแต่ละเดือนของปีได้
ตอนนี้เราสามารถสร้างตัวแปรของเดือน
ซึ่งเป็นอาร์เรย์ขนาด 12 ของประเภท struct month และสามารถแทนค่าในแต่ละเดือนได้
จากนั้นในแต่ละเดือน เราสามารถใช้จำนวนวันและตัวย่อของเดือนได้
ดังนั้นการใช้แนวคิดอันทรงพลังทั้งสองนี้ของอาร์เรย์และโครงสร้างจึงมีประโยชน์มาก
โครงสร้างสามารถมีองค์ประกอบได้หลายอย่าง
จึงสามารถเป็นโครงสร้างของอาร์เรย์ได้ และองค์ประกอบภายในโครงสร้างสามารถเป็นอาร์เรย์ได้
และต่อไปเราจะพูดถึงวิธีที่เราสามารถใช้โครงสร้างเพื่อบรรจุองค์ประกอบอื่นๆ เช่น พอยน์เตอร์
แต่คุณจะเห็นว่าโครงสร้างสามารถจัดเก็บข้อมูลประเภทใดก็ได้ในข้อมูลประเภทต่างๆ
มากมาย
และมีประโยชน์มากที่จะใช้กับแนวคิดอาร์เรย์
ฉันหวังว่านี่จะเป็นประโยชน์ อีกครั้ง เราจะมีความท้าทายในการสาธิตแนวคิดเหล่านี้และนำตัวอย่างบางส่วนมาไว้ในบล็อคโค้ดในภายหลัง
ขอขอบคุณ.