สมมติว่าเราต้องการจัดเก็บข้อมูลเกี่ยวกับผู้ใช้ที่ใช้บริการเฉพาะ ข้อมูลดังกล่าวอาจรวมถึงชื่อผู้ใช้ อีเมล ที่อยู่ โหมดบริการ และอื่นๆ ในการเก็บข้อมูลดังกล่าว เราสามารถดำเนินการสร้างแต่ละแอตทริบิวต์เป็นตัวแปรแบบสแตนด์อโลนได้ อย่างไรก็ตาม เมื่อเรามีผู้ใช้มากกว่า 10 ราย โค้ดดังกล่าวอาจไม่สามารถควบคุมได้และกลายเป็นเรื่องยากและน่าเบื่อหน่ายในการอ่าน
เพื่อแก้ปัญหานี้ เราสามารถสร้างโครงสร้างได้ ภายในโครงสร้าง เราสามารถจัดเก็บแอตทริบิวต์ทั้งหมดที่แชร์โดยผู้ใช้ทั้งหมด แล้วเพิ่มตัวแปรเฉพาะสำหรับผู้ใช้แต่ละราย
เรามาดูตัวอย่างต่างๆ เพื่อดูว่าจะนำไปใช้อย่างไร
วิธีการกำหนดโครงสร้างในC
ในการกำหนดโครงสร้างในภาษา C เราใช้คีย์เวิร์ด struct ตามด้วยชื่อโครงสร้าง หลังจากชื่อเรามีวงเล็บปีกกาที่เราเพิ่มสมาชิก
พิจารณาไวยากรณ์ด้านล่าง:
โครงสร้างstruct_name{
/* ข้อมูล */
พิมพ์ member_name;
พิมพ์ member_name2;
พิมพ์ member_name3;
...
พิมพ์member_nameN;
};
ชื่อของโครงสร้างสามารถเป็นอะไรก็ได้ที่คุณต้องการตราบเท่าที่เป็นไปตามหลักการตั้งชื่อของภาษาซี
เราสามารถใช้โครงสร้างตัวอย่างการเปรียบเทียบผู้ใช้ได้ดังนี้:
โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
};
วิธีสร้างตัวแปรโครงสร้าง
มีสองวิธีหลักในการสร้างตัวแปรโครงสร้าง อย่างแรกคือการประกาศพวกมันเหมือนตัวแปรปกติ และอีกอันคือการตั้งค่าโดยใช้เครื่องหมายปีกกา
ตัวอย่างด้านล่างแสดงวิธีการประกาศตัวแปรโครงสร้างเป็นตัวแปร C มาตรฐาน
โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
};
intหลัก(intargc, char const *argv[])
{
โครงสร้างผู้ใช้ ผู้ใช้1,ผู้ใช้2,ผู้ใช้3
กลับ 0;
}
วิธีอื่นในการสร้างตัวแปรโครงสร้างมีดังต่อไปนี้:
โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
}ผู้ใช้1,ผู้ใช้2,ผู้ใช้3;
ในตัวอย่างนี้ เราสร้างขึ้นในระหว่างการประกาศโครงสร้าง
โครงสร้างสมาชิก Init
คุณไม่สามารถเตรียมใช้งานสมาชิกของโครงสร้างในระหว่างการสร้างได้ เนื่องจากไม่มีการจัดสรรหน่วยความจำสำหรับชนิด
ในการเริ่มต้นสมาชิกของโครงสร้าง คุณใช้วงเล็บปีกกาดังที่แสดงด้านล่าง:
โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
};
intหลัก(intargc, char const *argv[])
{
โครงสร้างผู้ใช้ ผู้ใช้1= {'ชื่อผู้ใช้ของฉัน', ' [ป้องกันอีเมล] ', 35, จริง}
กลับ 0;
}
สมาชิกโครงสร้างการเข้าถึง
ในการเข้าถึงสมาชิกของโครงสร้าง เราใช้ตัวดำเนินการจุด โดยเริ่มจากชื่อโครงสร้าง จุด และชื่อของสมาชิก
โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
};
intหลัก(intargc, char const *argv[])
{
โครงสร้างผู้ใช้ ผู้ใช้1= {'ชื่อผู้ใช้ของฉัน', ' [ป้องกันอีเมล] ', 35, จริง}
ผู้ใช้1.อีเมล = ' [ป้องกันอีเมล] '
กลับ 0;
}
ในตัวอย่างนี้ เราเข้าถึงสมาชิกของ user1
Typedef คำสำคัญ
เราใช้คีย์เวิร์ด typedef เพื่อสร้างนามแฝงสำหรับประเภทข้อมูล ทำให้อ่านโค้ดได้ง่ายขึ้น
ตัวอย่างเช่น:
typedef โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
}ยู;
intหลัก(intargc, char const *argv[])
{
ผู้ใช้ของคุณ1= {'ชื่อผู้ใช้ของฉัน', ' [ป้องกันอีเมล] ', 35, จริง}
ผู้ใช้1.จดทะเบียน = เท็จ
กลับ 0;
}
ในตัวอย่างข้างต้น เราได้สร้างนามแฝง u สำหรับโครงสร้างผู้ใช้ ดังนั้นเราจึงไม่จำเป็นต้องเรียกผู้ใช้ struct ทุกครั้ง เราสามารถใช้ u ตามที่กำหนดไว้ข้างต้น
ตัวชี้โครงสร้าง
คุณยังสามารถมีตัวชี้ไปยังโครงสร้างได้อีกด้วย การทำเช่นนี้ช่วยให้คุณเข้าถึงสมาชิกโดยใช้โอเปอเรเตอร์ ->
ตัวอย่างเช่น:
typedef โครงสร้างผู้ใช้{
charชื่อผู้ใช้[ยี่สิบ];
charอีเมล[225];
charที่อยู่[ห้าสิบ];
intอายุ;
ลงทะเบียนบูล;
}ยู;
intหลัก(intargc, char const *argv[])
{
ผู้ใช้ของคุณ1= {'ชื่อผู้ใช้ของฉัน', ' [ป้องกันอีเมล] ', 35, จริง}
// ชี้ไปที่โครงสร้างอื่น
ยู*user_ptr= &ผู้ใช้1
user_ptr->ชื่อผู้ใช้= 'นามแฝง'
กลับ 0;
}
บทสรุป
คู่มือนี้ครอบคลุมพื้นฐานการทำงานกับโครงสร้างในภาษาซี
ขอบคุณสำหรับการอ่าน!