สวัสดีและยินดีต้อนรับ. เราอยู่ในส่วนใหม่
เราจะพูดถึงโครงสร้าง
นี่เป็นแนวคิดใหม่ใน c ที่ให้คุณจัดกลุ่มรายการต่างๆ เข้าด้วยกัน
คล้ายกับอาร์เรย์ แต่มีประสิทธิภาพมากกว่า
ฉันต้องการพูดคุยเกี่ยวกับโครงสร้าง วิธีที่คุณสามารถสร้างและวิธีการใช้โครงสร้าง
ดังนั้นโครงสร้างใน c จึงเป็นอีกเครื่องมือหนึ่งสำหรับการจัดกลุ่มองค์ประกอบเข้าด้วยกัน
อีกครั้ง ฉันบอกว่ามันคล้ายกับอาร์เรย์ แต่จริงๆ แล้วมีประสิทธิภาพมากกว่าเล็กน้อย
หากคุณคุ้นเคยกับการเขียนโปรแกรมเชิงวัตถุ
หากคุณเขียนโปรแกรมด้วย java หรือ c-plus plus
หรือภาษาเชิงวัตถุใดๆ ก็ตาม ถือว่าเป็นวัตถุแต่เฉพาะกับสมาชิกข้อมูลเท่านั้น
ไม่มีการทำงานจริง ไม่มีวิธีการใดๆ
ดังนั้นจึงเป็นแนวคิดที่มีประสิทธิภาพที่คุณจะใช้ในโปรแกรมภาษาซีจำนวนมากที่คุณพัฒนา
เนื่องจากคุณสามารถจัดกลุ่มรายการต่างๆ เข้าด้วยกันในชื่อเดียว
และรายการเหล่านั้นสามารถแสดงคุณลักษณะของข้อมูลได้
ตัวอย่างเช่น สมมติว่าคุณต้องการเก็บวันที่ไว้ในโปรแกรม
วันที่มักจะประกอบด้วยสามตัวแปร: เดือน วัน และปี
คุณจะต้องสร้างตัวแปรสามตัวดังกล่าวเพื่อเก็บข้อมูลนั้น
ตัวอย่างเช่น คุณจะบอกว่า int month เท่ากับ 9 วัน เท่ากับ
25 ปี เท่ากับ 2015
สมมติว่าโปรแกรมของคุณต้องจัดเก็บวันที่ซื้อรายการใดรายการหนึ่งด้วย
คุณอาจจะต้องไปและสร้างตัวแปรอีกสามตัวสำหรับแต่ละวันที่ที่คุณใช้ในโปรแกรมของคุณ
ดังนั้นคุณจะเห็นได้ว่าสิ่งนี้จะเกิดขึ้นซ้ำๆ
ได้อย่างไร และสุดท้ายคุณสร้างตัวแปรมากมาย
แต่สิ่งที่คุณควรสังเกตคือตัวแปรเหล่านี้มีความเกี่ยวข้องทางตรรกะ พวกเขาทั้งหมดเดท
ควรรวมกลุ่มกันจริงๆ
พวกเขาควรจะเกือบจะเป็นประเภทข้อมูลของตัวเอง จากนั้นคุณควรจะสามารถสร้างและเข้าถึงองค์ประกอบต่างๆ
ได้
คุณไม่จำเป็นต้องสร้างตัวแปรแยกกันสามตัวสำหรับทุกๆ วัน
นี่เป็นอีกครั้งที่มันเกี่ยวข้องกับวัตถุและคลาสที่มีแอตทริบิวต์ข้อมูลสามอย่าง
ดังนั้น จะดีกว่ามากถ้าคุณสามารถจัดกลุ่มชุดตัวแปรสามตัวเหล่านี้เข้าด้วยกัน
และนี่คือสิ่งที่องค์ประกอบโครงสร้างทำและ c
ช่วยให้คุณสามารถจัดกลุ่มองค์ประกอบต่างๆ เหล่านี้ร่วมกับชื่อเฉพาะได้
จากนั้นคุณสามารถสร้างตัวแปรต่างๆ ของชื่อนั้นและเข้าถึงองค์ประกอบในชื่อนั้น
แอตทริบิวต์ข้อมูลที่แตกต่างกัน พวกมันถูกเรียกว่าสมาชิกจริงๆ
ดังนั้นคุณจะสร้างโครงสร้างในค.
มันง่ายมาก การประกาศโครงสร้างจะอธิบายว่าโครงสร้างถูกรวมเข้าด้วยกันอย่างไร
องค์ประกอบใดบ้างที่อยู่ในโครงสร้าง
และเรามักจะอ้างถึงองค์ประกอบเหล่านี้เป็นสมาชิก
เนื่องจากคุณต้องกำหนดโครงสร้างหรือประกาศโครงสร้างก่อน
ให้อธิบายสิ่งที่อยู่ภายในโครงสร้าง
ดังนั้นคุณจึงสามารถทำได้ด้วยคีย์เวิร์ด struct
คีย์เวิร์ด struct ช่วยให้คุณสามารถกำหนดคอลเล็กชันของตัวแปรประเภทต่างๆ
ที่เรียกว่าโครงสร้าง ซึ่งคุณสามารถใช้เป็นหน่วยเดียวได้
แรงมาก.
ดังนั้นโดยใช้คีย์เวิร์ด struct นี้ สิ่งที่คุณต้องทำคือระบุชื่อ
และโดยปกติแล้วจะเรียกว่าชื่อแท็ก ในตัวอย่างนี้ เรามีแท็กชื่อวันที่
แต่คุณเห็นโครงสร้างคีย์เวิร์ด นั่นคือคีย์เวิร์ดที่บอกคอมไพเลอร์
c ว่านี่จะเป็นฟังก์ชันเฉพาะ
ฟังก์ชันนี้สามารถมีฟังก์ชันเฉพาะที่ช่วยให้คุณจัดกลุ่มองค์ประกอบได้
ดังนั้น struct คือคีย์เวิร์ดตามด้วยชื่อแท็ก จากนั้นคุณมีวงเล็บปีกกาด้านซ้ายและวงเล็บปีกกาด้านขวาตามด้วยเครื่องหมายอัฒภาคเพื่อสิ้นสุด
จากนั้นภายในนั้น คุณสามารถกำหนดตัวแปรประเภทใดก็ได้ที่คุณต้องการ คุณยังสามารถใส่พอยน์เตอร์ไว้ที่นั่น
และสิ่งเหล่านี้เรียกว่าสมาชิกของโครงสร้าง
ดังนั้นนี่คือคำสั่งอีกครั้งซึ่งกำหนดโครงสร้างวันที่ที่คอมไพเลอร์
c จะเข้าใจ
มันบอกคอมไพเลอร์ c ว่าโครงสร้างของรัฐจะมีองค์ประกอบสามประการ:
เดือนวันและปี ไม่มีการจัดสรรหน่วยความจำสำหรับการประกาศนี้
อีกครั้งที่คุณพูดคือ นี่คือโครงสร้างที่มีอยู่
ฉันยังไม่ได้เริ่มใช้เลย ฉันเพิ่งบอกว่านี่คือวิธีการกำหนด
นี่จะเป็นโครงสร้างวันที่และนี่คือสิ่งที่ประกอบด้วย
ชื่อตัวแปรภายในโครงสร้างวันที่ เดือน วัน และปี
เรียกว่า สมาชิก หรือ ฟิลด์
สมาชิกของโครงสร้างปรากฏขึ้นระหว่างวงเล็บปีกกาที่ตามวันที่ชื่อแท็ก
struct ดังนั้นวันที่ชื่อแท็ก
ไวยากรณ์ที่ง่ายมากในการจัดกลุ่มองค์ประกอบเหล่านี้เข้าด้วยกันภายในชื่อเดียวซึ่งก็คือวันที่
และคุณสังเกตเห็นว่ามันแตกต่างจากอาร์เรย์เพราะไม่มีดัชนี
คุณไม่ได้ระบุขนาดจริงๆ
ไม่ใช่ประเภทข้อมูลเดียวกันทุกประการ
คุณสามารถมีประเภทข้อมูลที่แตกต่างกันและคุณสามารถมีได้หลายแบบ
คุณจะใช้โครงสร้างนี้อย่างไร
คำจำกัดความของวันที่กำหนดประเภทใหม่ในภาษา
คุณสามารถคิดได้ว่าเป็นอีกประเภทหนึ่งเช่นเดียวกับ int, double หรือ float
ยกเว้นประเภทที่คุณกำหนดไว้ คุณเกือบจะคิดว่าเป็น enum ได้
ยกเว้น enum จะเก็บค่าได้เพียงค่าเดียวเท่านั้น
โครงสร้างวันที่นี้สามารถเก็บค่าได้สามค่า แต่เป็นประเภทข้อมูลอื่น
ขณะนี้ ตัวแปรต่างๆ สามารถประกาศให้เป็นประเภท struct ได้จนถึงปัจจุบัน
นั่นคือสิ่งที่คุณจะทำ
คุณสามารถสร้างตัวแปรใหม่ที่เรียกว่า today
และมันจะเป็นประเภท struct date
และวันนี้โดยพื้นฐานแล้วจะสามารถเก็บค่าได้สามค่า
จากนั้นหากคุณต้องการประกาศวันที่เพิ่มเติม คุณสามารถสร้างตัวแปรประเภทเดียวกันนั้นเพิ่มเติมได้
ดังนั้นคุณจึงไม่จำเป็นต้องมีตัวแปรแยกกันสามตัวสำหรับวันที่ซื้อ
สามตัวแปรแยกกันสำหรับวันที่ปัจจุบัน
สามตัวแปรแยกกันสำหรับวันที่เรียกเก็บเงิน
คุณสามารถมีหนึ่งตัวแปรหรือสองตัวแปรของอินสแตนซ์ที่แตกต่างกันของโครงสร้างจริงนั้นได้
อีกครั้งหวังว่าคุณจะสังเกตเห็นว่าสิ่งนี้มีประสิทธิภาพเพียงใด
ดังนั้นข้อความข้างต้นนี้จึงเป็นประเภทวันที่ struct
วันที่ซื้อ
ขณะนี้มีการจัดสรรหน่วยความจำเนื่องจากคุณประกาศว่าตัวแปรมีการจัดสรรหน่วยความจำสำหรับโครงสร้างนี้
หน่วยความจำถูกจัดสรรสำหรับค่าจำนวนเต็มสามค่าหรือสามสมาชิกของตัวแปรแต่ละตัว
ดังนั้นหน่วยความจำจะถูกจัดสรร
และเหตุผลที่จะถูกจัดสรรก็เพราะว่าไม่มีตัวชี้อยู่ในนั้น
หากมีพอยน์เตอร์ในโครงสร้างนั้น คุณจะต้องจัดสรรหน่วยความจำสำหรับพอยน์เตอร์นั้น
แต่เนื่องจากโครงสร้างวันที่ของวันนี้ มันเป็นโครงสร้างที่ง่ายมาก
ฉันเริ่มช้า มันมีสาม int สมาชิกเหล่านั้นจะถูกจัดสรรให้คุณโดยอัตโนมัติ
แต่ให้แน่ใจว่าคุณเข้าใจความแตกต่างจากสไลด์ก่อนหน้าและสไลด์ปัจจุบันนี้
มีความแตกต่างระหว่างการกำหนดโครงสร้างและการประกาศตัวแปรของประเภทโครงสร้างนั้น
โครงสร้างการเงินอีกแล้ว แค่บอกคอมไพเลอร์ c ว่านี่คือโครงสร้าง
และนี่คือข้อมูลที่อยู่ข้างใน
แต่การประกาศตัวแปรของโครงสร้างประเภทนั้นเป็นการบอกว่าฉันกำลังจะเริ่มใช้โครงสร้างนั้น
ตอนนี้ฉันมีหน่วยความจำที่จัดสรรสำหรับองค์ประกอบทั้งสามในตัวอย่างของเรา
และฉันสามารถเข้าถึงองค์ประกอบเหล่านั้นและตั้งค่าได้
คุณจะเข้าถึงสมาชิกในโครงสร้างได้อย่างไร?
ตอนนี้คุณรู้วิธีกำหนดโครงสร้างแล้ว และตอนนี้คุณรู้วิธีประกาศตัวแปรโครงสร้างแล้ว
ตอนนี้คุณต้องสามารถเข้าใจวิธีอ้างอิงถึงสมาชิกของ
struct เหล่านั้นได้
คุณต้องเข้าถึงพวกเขา หากคุณไม่สามารถเข้าถึงได้เพื่อดูค่าหรือตั้งค่า มันจะไม่มีประโยชน์
ดังนั้นชื่อตัวแปรโครงสร้างจึงไม่ใช่ตัวชี้
ดังนั้นคุณจึงต้องมีรูปแบบพิเศษเพื่อเข้าถึงสมาชิก
เนื่องจากพอยน์เตอร์มักจะประกอบด้วยค่าของที่อยู่เท่านั้น
และถ้าไม่ใช่ตัวชี้ คุณจะต้องมีไวยากรณ์พิเศษบางอย่าง
คุณสามารถอ้างถึงสมาชิกของโครงสร้างโดยการเขียนชื่อตัวแปรตามด้วยจุด
มันมักจะเรียกว่าเหมือนตัวดำเนินการจุด
จากนั้นหลังจากจุดโอเปอเรเตอร์จุดนั้น
คุณทำตามชื่อของตัวแปรสมาชิกภายในโครงสร้างนั้น
ระยะเวลาระหว่างชื่อตัวแปรโครงสร้างและชื่อสมาชิกเรียกว่าตัวดำเนินการเลือกสมาชิก
หรือเรียกอีกอย่างว่าตัวดำเนินการจุด
ไม่มีช่องว่างระหว่างชื่อตัวแปร จุด และชื่อสมาชิก
หากต้องการตั้งค่าของวันในตัวแปรวันนี้เป็น
25 ฉันจะทำสิ่งนี้ ชื่อของตัวแปรซึ่งก็คือวันนี้
แล้วฉันจะบอกว่า dot ไม่มีช่องว่างระหว่างด้านใดด้านหนึ่ง
จากนั้นฉันจะระบุชื่อขององค์ประกอบภายในการกำหนดโครงสร้าง
ซึ่งก็คือวัน
แล้วผมจะกำหนดมันเหมือนกับที่ผมกำหนดจำนวนเต็มอื่นๆ
ฉันจะใช้ตัวดำเนินการมอบหมายเท่ากับ
ค่าคงที่ตามตัวอักษรที่นี่และเครื่องหมายอัฒภาค
ง่ายมาก ถ้าผมต้องการกำหนดปี
ผมจะบอกว่าวันนี้ ปีและฉันจะบอกว่าเท่ากับ 2015 ตัวอย่างเช่น
และเมื่อฉันต้องการเข้าถึงค่าสมาชิก
ตัวอย่างเช่น ถ้าฉันต้องการเข้าถึงค่าสมาชิกของเดือนเพื่อดูว่ามีค่าเท่ากับ 12 หรือไม่
ฉันจะยังคงใช้รูปแบบจุดนั้น ตัวดำเนินการการเลือกสมาชิกนั้น
เพื่อให้คุณสามารถใช้โอเปอเรเตอร์การเลือกสมาชิกเพื่อเข้าถึงค่าสมาชิกได้
และเมื่อคุณเข้าถึงตัวแปรสมาชิกเหล่านั้น
คุณสามารถใช้มันได้เหมือนกับที่คุณใช้ตัวแปรอื่นๆ
คุณสามารถใช้พวกมันในการดำเนินการทางคณิตศาสตร์ได้หากพวกมันเป็น int
คุณจะทำตามกฎของประเภทข้อมูลนั้น
ในกรณีนี้ เราสามารถเปรียบเทียบมันกับ 12 เพียงแค่ใช้เท่ากับเท่ากับภายในคำสั่ง
if
แล้ว ตัวอย่างเช่น ถ้ามันเท่ากับ 12 เราก็บอกว่าเดือนหน้าเท่ากับ 1
นั่นอาจเป็นตัวแปรท้องถิ่นที่เราจะกำหนด
ลองมาดูตัวอย่างกัน ที่นี่เรากำลังกำหนดโครงสร้างที่เรียกว่าวันที่
เรามีสามองค์ประกอบ จำนวนเต็ม: เดือน วัน และปี
เรารู้ว่าเรากำลังกำหนดมันเพราะเรามีคีย์เวิร์ด struct และเรามีวงเล็บปีกกาเหล่านั้น
จากนั้นให้สังเกตด้วยว่าวงเล็บปีกกาด้านขวามีเครื่องหมายอัฒภาคเพื่อสิ้นสุดคำจำกัดความ
ณ จุดนี้ ไม่มีการจัดสรรหน่วยความจำสำหรับโครงสร้างนี้
ในบรรทัดถัดไป เราประกาศตัวแปรประเภทนั้นจริงๆ ดังนั้นเราจึงจัดสรรหน่วยความจำสำหรับชื่อตัวแปรในวันนี้ซึ่งมีองค์ประกอบสามอย่าง
ได้แก่ เดือน วัน และปีของประเภท int
เราสามารถกำหนดข้อมูลให้กับองค์ประกอบทั้งสามภายในโครงสร้างนั้นได้ในวันนี้โดยใช้การเข้าถึงสมาชิกดอทนั้น
ดังนั้นวันนี้ เดือนเท่ากับเก้าวันนี้ วันเท่ากับ 25 และวันนี้ ปี 2558.
หากเราต้องการพิมพ์หรือเข้าถึงข้อมูลนั้น เราจะเข้าถึงข้อมูลดังกล่าวด้วยวิธีเดียวกันหลังจากที่เรามอบหมายให้
เราจะใช้การเลือกสมาชิกนั้น: วันนี้ เดือน วันนี้. วันต่อวัน.
ปี. และอีกครั้ง เราสามารถดำเนินการเลขคณิตกับมันได้เพราะมันเป็น int
เราจะใช้เปอร์เซ็นต์ d หรือถ้าเราต้องการจัดรูปแบบเป็น
2 เราอาจบอกว่าเปอร์เซ็นต์ 2I หรือเปอร์เซ็นต์ 2D
ดังนั้นนี่คือไวยากรณ์ที่ค่อนข้างตรงไปตรงมา
ง่ายมากที่จะสร้างและกำหนดโครงสร้าง จากนั้นใช้พวกมันแล้วเข้าถึงได้โดยใช้โอเปอเรเตอร์การเลือกสมาชิกดอท
โครงสร้างและนิพจน์เป็นอย่างไร?
คุณเพิ่งเห็นว่าฉันสามารถเข้าถึงข้อมูลและใช้นิพจน์เลขคณิตได้
ก็ไม่ต่างกัน
เมื่อพูดถึงการประเมินนิพจน์ สมาชิกโครงสร้างจะปฏิบัติตามกฎเดียวกันกับตัวแปรทั่วไป
หากคุณมีสมาชิกอยู่ภายในโครงสร้างที่เป็นจำนวนเต็ม คุณสามารถทำกฎเดียวกันกับจำนวนเต็มอื่นๆ
คุณสามารถใช้การบวก การลบ และอื่นๆ ถ้าเป็นบัฟเฟอร์อักขระ คุณสามารถทำกฎของบัฟเฟอร์อักขระเท่านั้น
คุณสามารถเพิ่มและลบบัฟเฟอร์อักขระได้หรือไม่
ปกติแล้วไม่ใช่
ดังนั้น ข้อมูลแบบลอยตัว คูณสอง และประเภทข้อมูลที่แตกต่างกันทั้งหมด
คุณจะทำตามกฎเดียวกันเหล่านั้นเมื่อคุณใช้สมาชิกเหล่านั้นภายในนิพจน์
นี่คือตัวอย่าง
ผมว่าวันนี้. ปีหารด้วยร้อยบวกหนึ่ง
ถูกต้องสมบูรณ์เพราะ year เป็น int
ไม่ต่างจากการใช้ตัวแปรประเภท int ปกติ
คุณเพียงแค่เข้าถึงมันแตกต่างออกไปโดยใช้ตัวดำเนินการการเลือกสมาชิกนั้น
ตอนนี้มีรุ่นต่างๆ มีหลายวิธีในการกำหนดโครงสร้าง
สิ่งหนึ่งที่ยอดเยี่ยมเกี่ยวกับ c คือความยืดหยุ่น
และ c ช่วยให้คุณกำหนดโครงสร้างได้หลายวิธี ดังนั้น คุณอาจเห็นรูปแบบที่แตกต่างกันเมื่อคุณกำหนดโครงสร้าง
ตัวอย่างแรกที่ฉันแสดงให้คุณเห็นคือตัวอย่างที่คุณควรปฏิบัติตามจริงๆ คุณควรมีชื่อแท็กเสมอ และคุณควรกำหนดโครงสร้างในที่หนึ่งของโค้ดของคุณ
แล้วประกาศตัวแปรของชื่อในอีกที่หนึ่ง
แต่ค
อย่างที่มันเป็น มันยืดหยุ่นได้มาก คุณสามารถกำหนดโครงสร้างและประกาศตัวแปรในบรรทัดเดียวกันได้
และคุณยังสามารถกำหนดโครงสร้างที่ไม่ระบุชื่อหรือไม่มีโครงสร้างที่มีชื่อได้
มีความยืดหยุ่นมาก การประกาศตัวแปรให้เป็นส่วนหนึ่งของโครงสร้างหนึ่งๆ
ในเวลาเดียวกับที่คุณกำลังกำหนดโครงสร้างนั้นถูกต้อง
คุณสามารถใส่ชื่อของตัวแปรที่ด้านล่าง ฉันจะแสดงให้คุณเห็นว่าต้องทำอย่างไร
รวมชื่อตัวแปรหรือชื่อก่อนเครื่องหมายอัฒภาคที่สิ้นสุดของการกำหนดโครงสร้าง
และคุณยังสามารถกำหนดและเริ่มต้นค่าให้กับตัวแปรเหล่านั้นในแบบปกติที่คุณกำหนดตัวแปรใดๆ
ลองดูที่
รูปแบบของการกำหนดโครงสร้างที่ทำในเวลาเดียวกันกับที่คุณกำหนด คุณสามารถประกาศตัวแปรได้
ดังนั้นในกรณีนี้
เรากำหนด struct date ของเรา แต่เราได้สร้างตัวแปรที่เรียกว่า today ด้วย
เพราะที่วงเล็บปีกกาด้านขวาท้ายนั่นคือชื่อก่อนเครื่องหมายอัฒภาค ที่ทำทั้งการสร้างตัวแปรของ
type date struct และคำจำกัดความของ struct date
ในกรณีนี้ คุณกำลังสร้างตัวแปรของโครงสร้าง
เราเรียกสิ่งนั้นว่าเป็นตัวอย่างของโครงสร้างด้วย เรียกได้ว่าวันนี้
มีการประกาศพร้อมๆ กับที่มีการกำหนดโครงสร้าง
ดังนั้นวันนี้จึงเป็นตัวแปรของประเภทวันที่ เราทำทั้งหมดในที่เดียว
และคุณทำได้ทันทีหลังจากที่คุณทำวันนี้
คุณสามารถเริ่มต้นตัวแปรเหล่านั้นได้โดยใช้วงเล็บแล้วบอกว่าเดือนเท่ากับห้า
วันเท่ากับและอื่นๆ เช่นเดียวกับที่คุณเริ่มต้นจำนวนเต็มอื่นๆ
อีกวิธีหนึ่งที่คุณสามารถสร้างโครงสร้างได้ก็คือ คุณสามารถสร้างโครงสร้างที่ไม่มีชื่อได้
สิ่งนี้มีข้อจำกัดเล็กน้อยเพราะคุณไม่สามารถทำอะไรได้มากกับมัน
แต่คุณไม่จำเป็นต้องระบุชื่อแท็กจริงๆ
โปรดจำไว้ว่า ชื่อแท็กจะอยู่ที่ด้านบนสุด ถัดจากคีย์เวิร์ด struct
ในตัวอย่างก่อนหน้านี้ ชื่อแท็กคือวันที่
แต่คุณไม่จำเป็นต้องระบุวันที่
หากมีการกำหนดตัวแปรทั้งหมดของประเภทโครงสร้างเฉพาะเมื่อมีการกำหนดโครงสร้างแล้ว
ก็สามารถละชื่อได้
และความหมายจริงๆ ก็คือ คุณจะใช้โครงสร้างเพียงครั้งเดียวและครั้งเดียวเท่านั้น
เราก็บอกว่า struct int
day, int year, int month แล้วประกาศตัวแปรในสิ่งเดียวกัน
แต่คุณจะสังเกตเห็นว่าไม่มีชื่อแท็กอยู่หลังคีย์เวิร์ด struct
นี่เป็นเพียงโครงสร้างเดียว เราจะใช้ครั้งเดียว ดังนั้นเราจึงสร้างตัวแปรวันนี้
และเราจะไม่ใช้มันอีก
และนั่นคือข้อเสียของมันและข้อจำกัดจริงๆ
คุณไม่ต้องการทำสิ่งนี้จริงๆ เว้นแต่คุณจะมีโครงสร้างท้องถิ่นที่คุณใช้ครั้งเดียว
แต่คุณไม่สามารถกำหนดอินสแตนซ์เพิ่มเติมของสิ่งนี้ได้ หากคุณกำหนดโครงสร้างด้วยวิธีนี้เป็นโครงสร้างที่ไม่มีชื่อ
โครงสร้างที่ไม่มีชื่อ
ตัวแปรทั้งหมดของโครงสร้างประเภทนี้ที่คุณต้องการให้โปรแกรมของคุณจะต้องกำหนดไว้ในคำสั่งเดียว
คุณสามารถสร้างตัวแปรได้มากกว่าหนึ่งตัวแปร โดยคุณสามารถใช้เครื่องหมายจุลภาคของวันนี้
แล้วตามด้วยตัวแปรอื่น เพื่อให้คุณสามารถสร้างตัวแปรได้หลายตัว
คุณสามารถเริ่มต้นตัวแปรได้หลายตัว
แต่วิธีนี้ค่อนข้างจำกัด เพราะหลังจากการประกาศตัวแปรที่ด้านล่าง
คุณจะไม่สามารถสร้างตัวแปรได้อีก
จึงมีสามวิธีในการกำหนดโครงสร้างที่แตกต่างกัน
วิธีหนึ่งคือกำหนดโครงสร้างด้วยชื่อแท็กและไม่สร้างตัวแปร
คุณสร้างตัวแปรในอินสแตนซ์ที่แยกต่างหากเมื่อมีการจัดสรรหน่วยความจำ
อีกวิธีหนึ่งคือการสร้างตัวแปรและโครงสร้าง และในเวลาเดียวกันกับที่คุณจะมีชื่อแท็กและที่จะช่วยให้คุณสร้างอินสแตนซ์อื่นหรือตัวแปรอื่น
ๆ ของประเภทโครงสร้างนั้นได้ในภายหลังในโปรแกรมของคุณหรือตัวเลือกที่สามนี้ซึ่งคุณสามารถสร้างได้
โครงสร้างที่ไม่มีชื่อที่ไม่มีชื่อและมีเพียงตัวแปรที่ด้านล่าง
และอีกครั้ง
คุณสามารถเริ่มต้นสิ่งเหล่านี้ได้ทุกครั้งที่คุณสร้างตัวแปรโดยใช้วงเล็บปีกกาและอื่นๆ
ตอนนี้กำลังเริ่มต้นโครงสร้าง
การเริ่มต้นโครงสร้างคล้ายกับการเริ่มต้นอาร์เรย์
องค์ประกอบจะแสดงอยู่ในวงเล็บปีกกา โดยแต่ละองค์ประกอบคั่นด้วยเครื่องหมายจุลภาค
ไม่มีอะไรใหม่ให้เรียนรู้ที่นี่จริงๆ
ค่าเริ่มต้นที่แสดงรายการในวงเล็บปีกกาต้องเป็นนิพจน์คงที่ คุณไม่สามารถใช้ตัวแปรได้
มีลักษณะคล้ายกับอาร์เรย์
ที่นี่ เรากำลังสร้างตัวแปร today ของ type
struct date และเรากำลังบอกว่าสมาชิกตัวแรกมีค่าเท่ากับเจ็ด
ตัวที่สองคือสอง และตัวที่สามคือ 2015 ซึ่งตรงกับวันเดือนในปีเพราะนั่นคือลำดับ
ของวิธีการที่กำหนดไว้ในโครงสร้าง
เช่นเดียวกับการเริ่มต้นอาร์เรย์
อาจมีการแสดงค่าน้อยกว่าที่มีอยู่ในโครงสร้าง
คุณไม่จำเป็นต้องระบุทั้งสามอย่าง คุณสามารถระบุได้เพียงสองรายการซึ่งจะเริ่มต้นเดือนและวันและจะไม่เริ่มต้นปี
จึงจะกำหนดวันที่ หนึ่ง. เดือนถึง 12
วันที่1. วันถึง 10 แต่ไม่มีค่าเริ่มต้นถึงวันที่ ปี.
คุณยังสามารถระบุชื่อสมาชิกในรายการเริ่มต้นได้ด้วยวิธีนี้
คุณไม่จำเป็นต้องมีลำดับใดๆ
คุณสามารถเรียงลำดับตามต้องการได้ และไม่ต้องพึ่งสิ่งนั้น
ดังนั้นคุณสามารถทำอะไรบางอย่างเช่น สมาชิกเท่ากับค่าและวันที่จัดโครงสร้าง
วันที่หนึ่ง คุณอาจบอกว่าดอทเดือนเท่ากับ 12
ไวยากรณ์เริ่มต้นของสิ่งนี้คือการตั้งค่าสมาชิกภายในวงเล็บปีกกาด้วยจุด
จากนั้นเพียงแค่กำหนดค่า dot month เท่ากับ 12 comma dot date
เท่ากับ 10
คุณต้องการจุดนั้น จุดนั้นสำคัญ ดังนั้นอย่าลืมจุดนั้น
คุณไม่ต้องการอินสแตนซ์ก่อนจุด
นี่ก็แค่กำหนดสมาชิกปีของตัวแปรโครงสร้างวันที่วันนี้เป็น
2015 ในตัวอย่างต่อไปนี้
ตรงนี้เราแค่บอกว่าเพราะจำไว้ว่าคุณสามารถละเว้นตัวแปรสมาชิกอื่นบางตัวได้
และในกรณีนี้
เรายอมรับเดือนของวัน ดังนั้นเราจะตั้งปีเป็น 2015
ในกรณีก่อนหน้านี้ เราละเว้นปีและตั้งค่าเดือนและวันที่เป็น
12 และ 10 ตามลำดับ
นอกจากนี้เรายังสามารถมอบหมายงานด้วยตัวอักษรผสม
ทีนี้ มันคืออะไรกันแน่ที่เป็นตัวอักษรผสม
คุณสามารถกำหนดค่าตั้งแต่หนึ่งค่าขึ้นไปให้กับโครงสร้างในคำสั่งเดียวโดยใช้สิ่งที่เรียกว่าตัวอักษรผสม
ฉันเชื่อว่านี่อาจเป็นแค่ใน C11
แต่วันนี้เรามี สมมติว่าเราสร้างตัวแปรวันที่ของวันนี้
แล้วเราก็ใส่วันที่ของโครงสร้างในวงเล็บ
และในวงเล็บปีกกา เรากำลังบอกว่า 9 ลูกน้ำ 25 ลูกน้ำ 2015
และนี่คือตัวอักษรผสม
คำสั่งนี้สามารถปรากฏที่ใดก็ได้ในโปรแกรม
แทนที่จะเริ่มต้นหรือกำหนดค่าโดยใช้สมาชิก ดอท คุณสามารถใส่สิ่งนี้ไว้ที่ใดก็ได้ในโปรแกรมหลังจากที่คุณได้เริ่มต้นโครงสร้างของวันนี้แล้ว
มันไม่ใช่คำสั่งประกาศ
นี่คือการมอบหมายตามตัวอักษรแบบผสม
ตัวดำเนินการ typecast ใช้เพื่อบอกคอมไพเลอร์ถึงประเภทของนิพจน์
ดังนั้นคุณต้องการสิ่งเหล่านั้นในวงเล็บที่เป็น cast, struct date
รายการค่าจะเป็นไปตามการโยนและถูกกำหนดให้กับสมาชิกของโครงสร้างในลำดับนั้นขึ้นอยู่กับลำดับ
ดังนั้นจึงแสดงรายการในลักษณะเดียวกับที่คุณกำลังเริ่มต้นตัวแปรโครงสร้าง
ข้อดีอีกอย่างของสิ่งนี้คือ คุณไม่จำเป็นต้องกำหนดตัวแปรสมาชิกแต่ละตัวแยกกันในบรรทัดที่แยกจากกัน
คุณสามารถทำได้ทั้งหมดในบรรทัดเดียวและบอกว่าโอเคนี่คือค่าใหม่สำหรับตัวแปรนี้ในวันนี้
คุณยังสามารถระบุค่าโดยใช้สัญกรณ์ดอทตามที่ฉันได้กล่าวถึง
คุณจะต้องทำในบรรทัดเดียวแบบนี้หรือแยกบรรทัด
และด้วยวิธีนี้
มันดูเหมือนการเริ่มต้น แต่คุณยังคงใช้ตัวอักษรผสมอยู่
ข้อดีของการใช้วิธีนี้คือ อาร์กิวเมนต์สามารถปรากฏในลำดับใดก็ได้
เช่นเดียวกับก่อนหน้านี้
อีกครั้ง กุญแจสำคัญและความแตกต่างของงานเหล่านี้คือมันไม่ได้เกิดขึ้นในการเริ่มต้นที่คุณทำที่อื่นในโปรแกรมเพื่อกำหนดค่าใหม่ให้กับประเภทนั้น
ข้อมูลดีๆ มากมายในการบรรยายครั้งนี้
เราได้พูดคุยเกี่ยวกับ struct และวิธีการที่มีประสิทธิภาพ และวิธีที่เราสามารถจัดกลุ่ม
องค์ประกอบต่างๆ หรือตัวแปรต่างๆ ให้เป็นชื่อเดียว
เรากำหนดโครงสร้างนั้น มีหลายวิธีในการกำหนดโครงสร้าง
แล้วเราต้องประกาศตัวแปรด้วย
เมื่อเราได้ตัวแปรนั้นแล้ว เราก็สามารถเข้าถึง
กำหนดข้อมูลให้กับโครงสร้างนั้นได้โดยใช้ตัวดำเนินการการเลือกสมาชิกดอท
จากนั้นเรายังหารือเกี่ยวกับสัญกรณ์ต่างๆ และวิธีการต่างๆ
ในการทำสิ่งต่างๆ รวมทั้งการเริ่มต้น
เราจะใช้โครงสร้างค่อนข้างน้อย
ฉันจะมีความท้าทายสองสามข้อที่จะช่วยให้คุณคุ้นเคยกับไวยากรณ์นี้
แต่นี่เป็นเพียงจุดเริ่มต้นของโครงสร้าง นอกจากนี้เรายังต้องพูดถึงโครงสร้างที่ซ้อนกัน
วิธีที่คุณสามารถใช้พอยน์เตอร์และโครงสร้าง และสิ่งต่างๆ
เช่นนั้น
โชคดีมากที่ส่วนนี้สนุกและน่าตื่นเต้น ขอขอบคุณ.