ความหมาย
Array within structure หมายถึงการประกาศ array เป็นสมาชิก (member) ภายใน structure ทำให้สามารถเก็บข้อมูลหลายค่าในสมาชิกเดียวได้
รูปแบบทั่วไปของ Structure
struct tagname {
datatype member1;
datatype member2;
datatype memberN;
};ตัวอย่าง: Structure พร้อม Array ภายใน
struct book {
int pages;
char author[30]; // array of char (string)
float price;
};ตัวอย่างโปรแกรม: Structure Candidate พร้อม Array Marks
#include <stdio.h>
// ประกาศ structure candidate
struct candidate {
int roll_no;
char grade;
// Array ภายใน structure
float marks[4];
};
// ฟังก์ชันแสดงข้อมูล structure
void display(struct candidate a1) {
printf("เลขที่: %d\\n", a1.roll_no);
printf("เกรด: %c\\n", a1.grade);
printf("คะแนน:\\n");
int i;
int len = sizeof(a1.marks) / sizeof(float);
for (i = 0; i < len; i++) {
printf("วิชา %d: %.2f\\n", i+1, a1.marks[i]);
}
}
int main() {
// Initialize structure พร้อม array
struct candidate A = {1, 'A', {98.5, 77, 89, 78.5}};
display(A);
return 0;
}ผลลัพธ์
เลขที่: 1 เกรด: A คะแนน: วิชา 1: 98.50 วิชา 2: 77.00 วิชา 3: 89.00 วิชา 4: 78.50
คำอธิบายสำคัญ
- Array ภายใน structure จะถูกจัดสรรหน่วยความจำเป็นส่วนหนึ่งของ structure
- ขนาดของ structure = ผลรวมขนาดสมาชิกทั้งหมด (รวม padding)
- การเข้าถึง:
struct_var.array_member[index] - เมื่อส่ง structure ที่มี array ให้ฟังก์ชัน แบบ pass by value จะ copy array ทั้งหมดไปด้วย
- สามารถคำนวณขนาด array ได้ด้วย
sizeof(array)/sizeof(element_type)
การประยุกต์ใช้
- เก็บคะแนนสอบหลายวิชา
- เก็บพิกัด (x, y, z) เป็น array ขนาด 3
- เก็บข้อมูลเวลา (ชั่วโมง, นาที, วินาที)
- Buffer สำหรับอ่าน/เขียนไฟล์