Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

แนวคิด Array ภายใน Structure ในภาษา C

ความหมาย

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 สำหรับอ่าน/เขียนไฟล์