ความหมายของ Structure
Structure เป็นการรวมหัวข้อมูล (variables) ที่มีชนิดข้อมูลต่างๆ เข้าด้วยกันภายใต้ชื่อเดียว
รูปแบบทั่วไปของการประกาศ Structure
struct tagname {
datatype member1;
datatype member2;
datatype memberN;
};- struct - คีย์เวิร์ดสำหรับประกาศ structure
- tagname - ชื่อของ structure
- member1, member2... - สมาชิกหรือข้อมูลที่ประกอบเป็น structure
ตัวอย่าง: Structure สำหรับหนังสือ
struct book {
int pages;
char author[30];
float price;
};ตัวอย่างโปรแกรม: Structure ที่ประกาศใน Local Scope
#include <stdio.h>
// Global structure สำหรับพนักงาน
struct {
char name[20];
int age;
int salary;
char add[30];
} emp1, emp2;
int manager() {
// Structure ที่ประกาศใน local scope (ภายในฟังก์ชัน manager)
struct {
char name[20];
int age;
int salary;
char add[50];
} manager;
manager.age = 27;
if (manager.age > 30)
manager.salary = 650000;
else
manager.salary = 550000;
return manager.salary;
}
int main() {
printf("ป้อนชื่อพนักงาน 1: ");
scanf("%s", emp1.name);
printf("\\nป้อนที่อยู่พนักงาน 1: ");
scanf("%s", emp1.add);
printf("\\nป้อนเงินเดือนพนักงาน 1: ");
scanf("%d", &emp1.salary);
printf("\\nป้อนชื่อพนักงาน 2: ");
scanf("%s", emp2.name);
printf("\\nป้อนที่อยู่พนักงาน 2: ");
scanf("%s", emp2.add);
printf("\\nป้อนเงินเดือนพนักงาน 2: ");
scanf("%d", &emp2.salary);
printf("\\nเงินเดือนพนักงาน 1 คือ %d", emp1.salary);
printf("\\nเงินเดือนพนักงาน 2 คือ %d", emp2.salary);
printf("\\nเงินเดือนผู้จัดการคือ %d", manager());
return 0;
}ผลลัพธ์ตัวอย่าง
ป้อนชื่อพนักงาน 1: Bob ป้อนที่อยู่พนักงาน 1: Hyderabad ป้อนเงินเดือนพนักงาน 1: 500000 ป้อนชื่อพนักงาน 2: Hari ป้อนที่อยู่พนักงาน 2: Chennai ป้อนเงินเดือนพนักงาน 2: 450000 เงินเดือนพนักงาน 1 คือ 500000 เงินเดือนพนักงาน 2 คือ 450000 เงินเดือนผู้จัดการคือ 550000
คำอธิบายสำคัญ
- Structure ที่ประกาศภายในฟังก์ชัน (local scope) จะใช้งานได้เฉพาะภายในฟังก์ชันนั้นเท่านั้น
- Structure ที่ประกาศนอกฟังก์ชัน (global scope) ใช้งานได้ทั่วโปรแกรม
- ในตัวอย่าง โครงสร้าง manager ถูกประกาศภายในฟังก์ชัน manager() จึงเป็น local structure