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

Deep Copy ของ Struct ที่มี Array Member ใน C

ใน C การ assign struct ทำ shallow copy แต่ถ้า member เป็น array (static allocation) จะทำ deep copy อัตโนมัติ

ตัวอย่าง

typedef struct {
    int roll;
    char name[128]; // static array
} student_t;

student_t s1 = {1, "tom"};
student_t s2 = s1; // deep copy สำหรับ name array

s2.name[0] = 'T'; // s1 ไม่ได้รับผลกระทบ

ผลลัพธ์

s1: roll=1, name="tom"
s2: roll=1, name="Tom"

ข้อยกเว้น

ถ้า member เป็น pointer (dynamic allocation) จะเป็น shallow copy ต้อง copy เองด้วย malloc+memcpy