โครงสร้างในC

Structures C



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

สมมติว่าเราต้องการจัดเก็บข้อมูลเกี่ยวกับผู้ใช้ที่ใช้บริการเฉพาะ ข้อมูลดังกล่าวอาจรวมถึงชื่อผู้ใช้ อีเมล ที่อยู่ โหมดบริการ และอื่นๆ ในการเก็บข้อมูลดังกล่าว เราสามารถดำเนินการสร้างแต่ละแอตทริบิวต์เป็นตัวแปรแบบสแตนด์อโลนได้ อย่างไรก็ตาม เมื่อเรามีผู้ใช้มากกว่า 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;
}

บทสรุป

คู่มือนี้ครอบคลุมพื้นฐานการทำงานกับโครงสร้างในภาษาซี

ขอบคุณสำหรับการอ่าน!