More Related Content
Similar to งานทำ Blog บทที่ 11
Similar to งานทำ Blog บทที่ 11 (20)
More from รัสนา สิงหปรีชา
More from รัสนา สิงหปรีชา (20)
งานทำ Blog บทที่ 11
- 2. โครงสร้างข้อมูลแบบ Struct
Struct เป็นโครงสร้างข้อมูลชนิดหนึ่งในภาษา C ที่เหมาะสาหรับใช้
ในการเขียนโปรแกรมกับข้อมูลแบบรายการข้อมูลที่มีชนิดข้อมูลแต่ละตัว
แตกต่างกัน เช่น ข้อมูลนักเรียนที่ประกอบด้วย รหัสประจาตัวนักเรียน ชื่อ
นักเรียน แผนการเรียน หรือข้อมูลรายการสั่งซื้อสินค้าที่ประกอบด้วย ชื่อ
สินค้า ราคา จานวน ราคารวม เป็นต้น ซึ่งเราจะเรียกรายการข้อมูลแต่ละ
รายการว่า เร็คคอร์ด (Record)
โครงสร้างข้อมูลนักเรียน
รหัสนักเรียน
ชื่อนักเรียน
แผนการเรียน
ลักษณะโครงสร้างข้อมูล
โครงสร้างข้อมูล
รายการส่งซื้อ
ชื่อสินค้า
ราคา
จานวน
ราคารวม
- 3. การประกาศโครงสร้างข้อมูลแบบ struct
การสร้ า งและการประกาศโครงสร้ า งข้ อ มู ล
แบบ struct ขึ้นมาใช้งาน ประกอบด้วย ชื่อและสมาชิก
ภายใน struct ซึ่งมีรปแบบการประกาศใช้งานดังนี้
ู
struct Name
{
type_1 varName_1;
type_2 varName_2;
...
type_n varName_n;
};
- 5. ตัวอย่างการประกาศโครงสร้างข้อมูลแบบ struct
struct student
{
char chCode[5];
char strName[30];
char strMajor[30];
};
เป็นโครงสร้างข้อมูลแบบ struct ชื่อ student ประกอบด้วยสมาชิก ดังนี้
•รหัสนักเรียน เป็นตัวแปรอาร์เรย์ชนิดอักขระ 5 ตัวอักขระ
•ชื่อนักเรียน เป็นตัวแปรชนิดข้อความ 30 ตัวอักษร
•แผนการเรียน เป็นตัวแปรชนิดข้อความ 30 ตัวอักษร
- 8. ตัวอย่างการประกาศโครงสร้างข้อมูลแบบ struct ด้วยคาสั่ง typedef
typedef struct
{
char chCode[5];
char strName[30];
char strMajor[30];
};
เป็นโครงสร้างข้อมูลแบบ struct ชื่อ student ประกอบด้วยสมาชิก ดังนี้
•รหัสนักเรียน เป็นตัวแปรอาร์เรย์ชนิดอักขระ 5 ตัวอักขระ
•ชื่อนักเรียน เป็นตัวแปรชนิดข้อความ 30 ตัวอักษร
•แผนการเรียน เป็นตัวแปรชนิดข้อความ 30 ตัวอักษร
- 12. อธิบายการใช้โปรแกรม
บรรทัดที่ 4 – 10 ประกาศโครงสร้างข้อมูล struct ชื่อ Person ซึ่งประกอบด้วย
- ชื่อ
เป็นตัวแปรชนิดข้อความชื่อ strName
- อายุ
เป็นตัวแปรชนิดจานวนเต็มชื่อ intAge
- ความสูง เป็นตัวแปรชนิดจานวนเต็มชื่อ intHigh
- น้าหนัก เป็นตัวแปรชนิดจานวนเต็มชื่อ intWeight
บรรทัดที่ 12 ประกาศฟังก์ชันโปรโตไทป์
บรรทัดที่ 16
ประกาศตัวแปร struct ชื่อ pCustomer พร้อมกาหนดค่าให้
สมาชิกแต่ละตัว
บรรทัดที่ 17
เรียกใช้งานฟังก์ชัน TestPointer โดยส่งตาแหน่งที่อยู่ของ
ตัวแปร struct ไปให้ฟังก์ชันใช้งาน
- 13. บรรทัดที่ 21 – 27
บรรทัดที่ 23
บรรทัดที่ 24
บรรทัดที่ 25
บรรทัดที่ 26
สร้างฟังก์ชัน TestPointer โดยประกาศพอยน์เตอร์รับ
ตาแหน่งที่อยู่ของข้อมูล
แสดงค่าข้อความของตัวแปรพอยน์เตอร์ของ struct
แสดงค่าข้อความของตัวแปรพอยน์เตอร์ของ struct
แสดงค่าข้อความของตัวแปรพอยน์เตอร์ของ struct
แสดงค่าข้อความของตัวแปรพอยน์เตอร์ของ struct
- 16. ฟังก์ชันที่ไม่มีการรับค่า และมีการส่งค่ากลับ
ฟังก์ชันที่ไม่มีการรับค่า และมีการส่งค่ากลับ คือ ฟังก์ชันที่ไม่มีการรับ
ค่าข้อมูลจากฟังก์ชันที่เรียกฟังก์ชันใช้งาน และเมื่อประมวลผลเสร็จจะมีการส่ง
ค่าข้อมูลกลับไปยังฟังกันที่เรียกฟังก์ชันนี้ทางาน ในที่นี้เราจะใช้โครงสร้าง
ข้อมูลในการส่งค่ากลับให้ฟังก์ชันที่เรียกฟังก์ชันนี้ทางานนั่นเอง ซึ่งมีรูปแบบ
การสร้างฟังก์ชันดังนี้
struct structName functionName (void)
{
statements;
return varstructName;
}
- 20. ฟังก์ชันที่มีการรับค่า และมีการส่งค่ากลับ
คือ ฟั งก์ ชัน ที่มี การรั บค่ าข้ อมู ลจากฟั ง ก์ ชั น ที่ เรี ย ก
ฟังก์ชันใช้งานเข้ามาใช้ในการประมวลผล และเมื่อ
ประมวลผลเสร็ จ จะมี ก ารส่ ง ค่ า ข้ อ มู ล กลั บ ไปยั ง
ฟั ง ก์ ชั น ที่ เ รี ย กฟั ง ก์ ชั น นี้ ท างาน ซึ่ ง มี รู ป แบบการ
สร้างฟังก์ชันดังนี้
struct structNameOutput functionName (structNmaeInput varstructNameInput)
{
statements;
return varstructNameOutput;
}
- 22. ยูเนียน (Union )
ยูเนียน (union) เป็นข้อมูลอีกรูปแบบหนึ่งของภาษา C
ลักษณะการทางานเหมือนกับ struct
คือภายในยูเนียนจะ
ประกอบด้วยสมาชิกที่เป็นชนิดข้อมูลพื้นฐานของภาษา C แต่จะ
แตกต่างที่สมาชิกแต่ละตัวของยูเนียนนั้นใช้พื้นที่หน่วยความจ า
ร่วมกัน โดยพื้นที่หน่วยความจาของยูเนียนจะมีขนาดเท่ากับขนาด
ของสมาชิ ก ที่ มี ข นาดใหญ่ ที่ สุ ด นั่ น หมายความว่ า ยู เ นี ย นจะ
สามารถเก็บข้อมูลสมาชิกได้ทีละตัวเท่านั้น
- 23. struct student
{
char strCode[5];
float fGPA;
};
struct student
{
char strCode[5];
float fGPA;
};
fGPA
fGPA
strCode[5];
ขนาดพื้นที่หน่วยความจาของ struct
strCode[5];
ขนาดพื้นที่หน่วยความจาของ Union
จากรูปจะเห็นได้ว่า ขนาดของ struct จะมีขนาดเท่ากับขนาดสมาชิกแต่ละตัวรวมกัน
ส่วนขนาดของยูเนียนจะมีขนาดเท่ากับขนาดของสมาชิกที่มีขนาดใหญ่ที่สุด
- 25. ค่าคงที่ enum (Enumeration Constans)
enum เป็นค่าคงที่อีกรูปแบบหนึ่งของภาษา C โดยมีลักษณะการ
จัดเก็บข้อมูลเป็นชุด โดยสมาชิกแต่ละตัวเป็นชนิดข้อมูลเดียวกันเรียงต่อ
กัน ซึ่งอ้างอิงตาแหน่งข้อมูลด้วยอินเด็กซ์ (index) เหมือนอาร์เรย์ คือ
แต่ละตาแหน่งเพิ่มขึ้น 1 ค่า ซึ่งมีรูปแบบการกาหนดข้อมูลชนิด enum
ดังนี้ enum enumName
{
Data_1;
Data_2;
Data_n;
};