1 / 13

บทที่ 11

บทที่ 11. ข้อมูลแบบโครงสร้างและยูเนียน. การสร้างชนิดข้อมูล.

rich
Download Presentation

บทที่ 11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 11 ข้อมูลแบบโครงสร้างและยูเนียน

  2. การสร้างชนิดข้อมูล • ก่อนจะศึกษาชนิดข้อมูลแบบโครงสร้างและยูเนียนนั้น จะต้องรู้จักคำสั่งในการสร้างชนิดข้อมูลก่อน เพราะข้อมูลแบบโครงสร้างและยูเนียน จะใช้คำสั่งนี้สร้างขึ้นมา นั่นก็คือ typedef ผู้ใช้จะสามารถสร้างชนิดข้อมูลใหม่จากชนิดข้อมูลพื้นฐานที่มีอยู่เดิมแล้ว • รูปแบบ typedef [ชนิดข้อมูล] [ชื่อชนิดข้อมูลใหม่]; สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  3. ข้อมูลแบบโครงสร้าง การรวมตัวแปร ที่มีชนิดข้อมูลหลายแบบมารวมกันให้เป็นโครงสร้างเดียวกัน แล้วโครงสร้างนั้นก็จะมีชื่อประจำตัวของโครงสร้างนั้นด้วย แต่ละตัวแปรในโครงสร้าง จะเรียกว่าสมาชิก ซึ่งในหนึ่งโครงสร้างนั้นสามารถมีตัวแปรหรือสมาชิกได้ไม่จำกัด และแต่ละสมาชิกจะมีหน่วยความจำของตัวเอง สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  4. การสร้างและกำหนดลักษณะของโครงสร้างการสร้างและกำหนดลักษณะของโครงสร้าง • การสร้างตัวแปรเป็นโครงสร้าง การสร้างตัวแปรเป็นโครงสร้าง จะมีรูปแบบดังนี้ struct { [รายชื่อสมาชิก] } [ชื่อของโครงสร้าง]; • การสร้างโครงสร้างเป็นชนิดข้อมูลใหม่ การสร้างโครงสร้างเป็นชนิดข้อมูลใหม่ ซึ่งโดยการใช้โครงสร้างจะนิยมใช้แบบนี้ เพราะโครงสร้างที่สร้างขึ้น จะเป็นชนิดข้อมูลใหม่อีกชนิดหนึ่ง ซึ่งสามารถนำสร้างตัวแปรได้ โดยมีรูปแบบดังนี้ typedef struct { [รายชื่อสมาชิก] } [ชื่อชนิดข้อมูลใหม่]; สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  5. การกำหนดค่าเริ่มต้น • ผู้ใช้สามารถกำหนดค่าเริ่มต้นให้กับโครงสร้างได้ • ตัวอย่างแรกเป็นการกำหนดค่าให้กับแต่ละสมาชิก ส่วนตัวอย่างที่ 2 เป็นการกำหนดค่าให้บางสมาชิกของโครงสร้าง โดยค่าที่จะกำหนดให้จะเก็บลงในสมาชิก เรียงตามลำดับของโครงสร้างที่สร้างไว้ สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  6. การเข้าถึงโครงสร้าง • หลังจากที่สร้างโครงสร้างได้แล้ว ต่อมาก็มาศึกษาการเข้าถึงสมาชิกแต่ละตัวในโครงสร้างที่สร้างขึ้น ซึ่งผู้ใช้สามารถที่จะเข้าถึงและกระทำต่อสมาชิกภายในโครงสร้างได้ โดยตัวอย่างการเข้าเข้าถึงสมาชิกแต่ละสมาชิกในโครงสร้าง Student ได้แสดงตัวอย่างด้านล่างนี้ • aStudent.id • aStudent.name • aStudent.gradePoints สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  7. พอยเตอร์ของโครงสร้าง สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  8. โครงสร้างซ้อนโครงสร้างโครงสร้างซ้อนโครงสร้าง • ตัวอย่าง สมมุติต้องการมีโครงสร้างที่ชื่อ stamp โดยต้องการจะเก็บ date และ time ไว้ภายใน date จะต้องเก็บ month, day และyear ส่วน time จะต้องเก็บ hour, minute และ second ซึ่งโครงสร้างของ stamp stamp.tme.sec stamp.date.month stamp.date stamp.tme สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  9. การประกาศโครงสร้างซ้อนโครงสร้างการประกาศโครงสร้างซ้อนโครงสร้าง typedef struct { int month; int day; int year; } DATE; typedef struct { int hour; int min; int sec; } TIME; typedef struct { DATE date; TIME time; } STAMP; STAMP stamp; สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  10. การเข้าถึงโครงสร้างซ้อนโครงสร้างการเข้าถึงโครงสร้างซ้อนโครงสร้าง • stamp • stamp.date • stamp.date.month • stamp.date.day • stamp.date.year • stamp.time • stamp.time.hour • stamp.time.min • stamp.time.sec สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  11. การกำหนดค่าเริ่มต้นโครงสร้างซ้อนโครงสร้างการกำหนดค่าเริ่มต้นโครงสร้างซ้อนโครงสร้าง • การกำหนดค่าเริ่มต้นให้กับโครงสร้างซ้อนโครงสร้าง จะมีกฎอยู่ว่า โครงสร้างที่อยู่ภายในโครงสร้างหลักจะต้องกำหนดค่าอยู่ในวงเล็บปีกกา และสมาชิกภายในโครงสร้างนั้นจะต้องคั่นด้วยเครื่องหมายลูกน้ำเท่านั้น ถ้าในโครงสร้างหลักมีสมาชิกข้างในเป็นโครงสร้างหลายสมาชิก จะต้องคั่นระหว่างสมาชิกด้วยเครื่องหมายลูกน้ำด้วย ดังเช่นตัวอย่างด้านล่างเป็นกำหนดค่าเริ่มต้นให้กับ โครงสร้าง stamp • STAMP stamo = {{05, 10, 1936}, {23, 45, 00}}; สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  12. โครงสร้างที่มีอาร์เรย์เป็นส่วนสมาชิกโครงสร้างที่มีอาร์เรย์เป็นส่วนสมาชิก • การประกาศโครงสร้างที่มีอาร์เรย์เป็นสมาชิก โครงสร้างสามารถมีอาร์เรย์เป็นสมาชิกได้ โดยการประกาศนั้นก็เหมือนกับการประกาศอาร์เรย์ทั่วไป • การเข้าถึงอาร์เรย์ในโครงสร้าง • student • student.name • student.name[i] • student.midterm • student.midterm[i] • student.final สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

  13. typedef union num { 16706 short num; char chAry[2]; chAry[0] chAry[1] } SH_CH2; A B SH_CH2 data; ข้อมูลแบบยูเนียน • ข้อมูลแบบยูเนียน (Union) เป็นข้อมูลที่มีลักษณะคล้ายกับข้อมูลแบบโครงสร้าง แต่ตัวแปรหรือสมาชิกต่าง ๆ ในยูเนียนนั้น จะใช้หน่วยความจำเดียวกัน คือจะมีตัวแปรหรือสมาชิกใดสมาชิกหนึ่งเท่านั้นที่ใช้หน่วยความจำในช่วงเวลานั้น • การเข้าถึงยูเนียน • data.num • data.chAry[0] สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อการศึกษาเท่านั้น

More Related