Struct
แนะนำ Struct
ในภาษา C++ เราใช้ Struct (ย่อมาจาก structure) ในการสร้างชนิดข้อมูลใหม่เพื่อเก็บค่าหลายๆอย่างรวมกันเป็นชิ้นเดียว ช่วยให้เราจัดการข้อมูลที่มีความเกี่ยวข้องกันได้ง่ายและเป็นระเบียบมากขึ้น ตัวแปรที่อยู่ภายใน struct จะถูกเรียกว่าสมาชิก (member) หรือ field ข้อมูล
struct มีประโยชน์มากเวลาที่เราอยากสร้างชนิดข้อมูลซับซ้อนที่สื่อความหมายบางอย่างที่มีรายละเอียด (attribute) หลายอย่างประกอบกันอยู่ เช่น
- ใช้ Struct เป็นข้อมูลนักเรียน
- ตำแหน่งพิกัดบนแผนที่
- รายชื่อสิ่งของในคลังสินค้า
โดยรายละเอียดทั้งหมดของแต่ละอันก็จะเป็น attribute อยู่ในนั้น
นี่คือ Basic Syntax ของ struct
struct StructName {
// Members (variables) of the struct
DataType member1;
DataType member2;
// ...
};
ตัวอย่างการใช้งาน
#include <iostream>
#include <string>
using namespace std;
// Define a struct named 'Student'
struct Student {
string name;
int age;
float gpa;
};
int main() {
// Create an instance of Student
Student student1;
// Assign values to members of student1
student1.name = "John Doe";
student1.age = 20;
student1.gpa = 3.5;
// Access and print members of student1
cout << "Name: " << student1.name << endl;
cout << "Age: " << student1.age << endl;
cout << "GPA: " << student1.gpa << endl;
return 0;
}
จาก code ด้านบน เป็นการสร้างและใช้งาน struct ชื่อ Student โดยส่วนที่ประกาศ Struct Student นั้น
struct Student { ... };
บรรทัดนี้จะสร้าง "แบบพิมพ์เขียว" ชนิดข้อมูลใหม่ ซึ่งก็คือ struct ที่ชื่อว่า Student ซึ่ง struct จะทำหน้าที่รวมข้อมูลไว้ด้วยกัน โดยแต่ละส่วนหรือตัวแปรที่อยู่ภายใน struct จะถือเป็นชิ้นส่วน หรือเป็น "สมาชิก" (member)- struct ชื่อ Student ประกอบไปด้วยสมาชิก 3 ตัว คือ
string name;
จะเก็บ "ชื่อ" ของนักเรียน เป็นชนิดข้อมูล string (ข้อความ)int age;
จะเก็บ "อายุ" ของนักเรียน เป็นชนิดข้อมูล integer (ตัวเลขจำนวนเต็ม)float gpa;
จะเก็บ "คะแนนเฉลี่ย" (GPA) เป็นชนิดข้อมูล float (ตัวเลขทศนิยม
โดยการใช้งาน Struct Student ภายในฟังก์ชัน main()
- การสร้าง instance
Student student1;
บรรทัดนี้สร้าง instance (หรือ ตัวแปร) ชื่อstudent1
จาก struct ชื่อว่า Student ตั วแปร instance นี้จะมีสมาชิกชื่อ name, age และ gpa เป็นของตัวเอง - โดยมีการกำหนดค่าสมาชิกของ student1 คือ
student1.name = "John Doe";
ทำให้สมาชิกตัวแปรที่มีชื่อว่า "name" ที่อยู่ภายใน student1 นั้นได้เก็บค่า "John Doe" (ซึ่งเป็นข้อมูลชนิดข้อความหรือ string)student1.age = 20;
ทำให้สมาชิกตัวแปรที่มีชื่อว่า "age" ที่อยู่ภายใน student1 นั้นได้เก็บค่า 20 (ซึ่งเป็นตัวเลขจำนวนเต็ม)student1.gpa = 3.5;
ทำให้สมาชิกตัวแปรที่มีชื่อว่า "gpa" ที่อยู่ภายใน student1 นั้นได้เก็บค่า 3.5 (ซึ่งเป็นตัวเลขที่มีทศนิยม) สรุปคือเราเอาข้อมูล ชื่อ อายุ และ คะแนนเฉลี่ย ไปยัดไว้ในสมาชิกของตัวแปร instance ที่ชื่อว่า student1
- คำสั่ง
std::cout
ทำการเข้าถึงสมาชิกของ student1 แบบตรงๆ แล้วจึงพิมพ์ค่าของ ชื่อ อายุ และ คะแนนเฉลี่ย ออกมาเป็นการสาธิตว่าเราจะสามารถอ่านค่าที่อยู่ในสมาชิกของ struct เหล่านี้ออกมาได้อย่างไร